首页 > 解决方案 > Django:模型上的多对多字段

问题描述

我有这些模型:

class Unit(AppModel):
    name = models.CharField(max_length=255)

    def __str__(self):
        return self.name

class Item(AppModel):
    title = models.CharField(max_length=255)
    units = models.ManyToManyField("Unit", symmetrical=False, related_name="items")

    def __str__(self):
        return self.title + self.units

class Invoice(AppModel):
    items = models.ManyToManyField("Item", symmetrical=False, related_name="invoices")

    def __str__(self):
        return "invoice_" + self.id

如您所见,我们有一个Itemwith multipleunits和一个Invoicewith multiple items

但是,我希望每个itemInvoiceunit只有一个。如何做到这一点?

即,some_item.units应该返回其所有类型的单位。然而,for item in some_invoice.items: return item.units应该返回一个单元。

有没有其他方法来实现它?新的数据库设计??那么如何?帮助..

注意:我无法框出这篇文章的标题。随意这样做。谢谢。

标签: pythondjangopython-3.xdjango-modelsdjango-forms

解决方案


您需要在 Item 模型上使用 ForeignKey,而不是 ManyToManyField。这样一个项目将只有一个单元,但一个单元将被允许有多个项目。


推荐阅读