首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >姜戈ManyToMany领域或其他什么?

姜戈ManyToMany领域或其他什么?
EN

Stack Overflow用户
提问于 2016-08-07 17:39:45
回答 1查看 145关注 0票数 0

我有一个简单的产品和变化的eCommerce网站。

每一种变化肯定会有不同的权重,每个权重都会有一个量。

我已经实现了一个与变化具有ForeignKey关系的权重模型,因为每个变化可以有不同的权重,并且每个权重都有一个数量。

代码语言:javascript
复制
class Weight(models.Model):
    variation = models.ForeignKey(Variation)
    size = models.DecimalField(decimal_places=3, max_digits=8, 
                            validators=[MinValueValidator(Decimal('0.10'))])
    quantity = models.PositiveIntegerField(null=True, blank=True, help_text="Select Quantity for this size") 

我添加了内联的权重,可以在一个变体中添加多个权重值和数量。请参阅此http://imgur.com/XLM6sQJ

有人可能认为这可以通过为每个权重创建变化来实现,但由于可以确定每个产品将具有不同的权重,因此没有必要为每个权重创建变化。

现在我面临的问题是,每个变体都会有不同的权重,例如,一个变体可能有1lb,2lb,3lb的权重。其中的每一个都将为每个变体创建新的权重对象。这意味着如果另一个变体也具有1lb、2lb、3lb的权重,则会创建新对象,而不会重用现有对象。这将导致具有许多重复的权重值的大型db表。这是一个问题,因为任何产品所需的重量和量值都是有限的(重量=1磅到100磅,数量=1到100磅),因此理想情况下应该重用这些重量和量值。

为了避免这种情况,我正在考虑有ManyToMany字段的权重模型变化,然后数量应该下拉为每个选定的权重。这将允许be存储重量和数量的值,并让每个产品在每个实例中使用相同的值。

我的问题是:

  1. 这是正确的方法吗?
  2. 如果不是,执行此操作的最佳方法是什么?
  3. 如果这是正确的方法如何执行此操作?
  4. 如果这是正确的方法,我如何在管理网站中显示此内容,因为每个权重都应该有数量(我不知道如何执行此操作)?
  5. 是否有更好的方法来实现这一点,如果有,如何实现?H212
EN

回答 1

Stack Overflow用户

发布于 2016-08-07 23:46:09

你对你想要怎么做有一个清晰的理解。

我同意你的观点,对不同的变化重用相同的权重,而不是创建具有相同权重的新权重。这是我认为更好的方法,可能有多种方法。

要回答您的问题,请在您的应用程序中尝试此模型关系:

代码语言:javascript
复制
 class Quantity(models.Model):
     quantity = models.PositiveIntegerField()

 class Weight(models.Model):
     weight = models.PositiveIntegerField()
     quantity = models.ManyToManyField(Quantity)


 class Variation(models.Model):
     name = models.CharField()
     weight = models.ManyToManyField(Weight)

然后在权重类中逐个添加所需的所有权重。因此,当您需要向变化表添加一些权重时,您可以从权重类中选择权重,我们已经在其中添加了我们可能需要的权重。

通过这种方式,您可以对不同的变体重用相同的权重,甚至不必具有重复的记录。

确保您已经在管理员中注册了这两个模型,以便轻松访问。

这应该可以解决在权重表中有多条记录的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38812838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档