【问题标题】:Django models, set unqiue attribute for M2M field per objectDjango 模型,为每个对象的 M2M 字段设置 unqiue 属性
【发布时间】:2018-04-18 18:56:00
【问题描述】:

目前,有一个包含 Item 表和 Stock 表的数据库。两者之间存在多对多的关系。单个项目对象可以有多种尺寸。下一步是为每个尺寸的商品分配一个“inStock”选项。 关于实现这一目标的任何想法?

当前模型.py

class Stock(models.Model):
    size = models.CharField(max_length=30)
    stock = models.BooleanField(default=False)
    def __str__(self):
        return self.size

class Item(models.Model):
    title = models.CharField(max_length=250, null=True, unique=True)
    price = models.DecimalField(max_digits=8, decimal_places=2)
    aw_product_id = models.CharField(max_length=11, null=True) # Removed because multiple products has similar identifer
    url = models.URLField(max_length=250)           # Removed 'unique=True'as the aw_prod_id will throw an integrity error
    image = models.CharField(max_length=1000)
    retailer = models.CharField(max_length=250)
    category = models.CharField(max_length=100)
    featured = models.CharField(max_length=10, default='NO')
    gender = models.CharField(max_length=100, null=True)
    sizes = models.ManyToManyField(Stock)
    uniq_id = models.CharField(max_length=11, null=True, unique=True) # Removed because multiple products has similar identifer

    def __str__(self):
        return self.title

【问题讨论】:

标签: python django postgresql django-models django-rest-framework


【解决方案1】:

您可以使用 ManyToManyField 的 through 参数来指定用于关系的另一个模型,使用附加字段代替 django 默认创建的自动生成模型。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-08
  • 2013-02-05
  • 2012-08-20
  • 2019-02-08
  • 2018-12-18
相关资源
最近更新 更多