【问题标题】:Unique field values and ManyToMany relationships唯一字段值和多对多关系
【发布时间】:2009-11-22 20:29:02
【问题描述】:

假设我有一个定义如下的类结构:

Class Item(models.Model):
    ...
    price = models.IntegerField()
    upc = models.IntegerField()
    ...

Class Store(models.Model):
    ...
    inventory = models.ManyToManyField(Item)
    ...

基本上,我希望商店模型能够访问相同的库存。但是,项目模型中的价格值对于链接到它的每个商店都是唯一的。例如我可能有一个名为 Bike 的项目模型实例,所有商店都可以访问它。对于所有商店,upc(条形码)将相同,但每个商店的价格会有所不同。有没有办法使用这个类结构来实现这种关系?

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    使用显式的through 表。见the documentation

    【讨论】:

    • 感谢您的回复。我认为这是有道理的,但您能解释一下我如何确保每个商店的每个价格都是独一无二的吗?
    • 这应该从文档示例中显而易见。您实现了一个中间表/模型,并且对于任何给定的 Store/Item 组合,您可以拥有其他数据,例如价格(您可能希望从 Item 模型中删除 price 字段)。
    • 如果您需要确保给定商店的价格唯一性(坦率地说,这似乎是一个奇怪的要求),您可以在 through 模型上使用 unique_together Meta 选项,以确保 ('store ', 'price') are unique_together。
    • 感谢 cmets 伙计们。阅读文档后,我能够做到这一点。我不应该说每家商店的价格应该是独一无二的。我的意思是它应该针对每个商店,而不是对所有商店都通用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 2021-09-07
    相关资源
    最近更新 更多