簡體   English   中英

Django model 使用多對多關系設計購物清單?

[英]Django model design for Shopping List with use of ManytoMany relationship?

我正在制作一個 Django 應用程序來處理多個購物清單。 哪個應該有多對多字段,項目 model 或列表 model? 這個 model 是最優的嗎?

一個列表可以有許多項目、0 個或多個子列表、0 個或多個關聯商店。 大多數這些關系看起來像多對多。 一個項目可以在多個列表中,一個商店可以關聯到多個列表。 子列表只是將項目放在類別中,因此我還可以刪除此 model 並向項目添加類別屬性。 但是,最令人困惑的部分是:

項目有用於列表的 m2m 字段,但它是否也應該有用於子列表的 m2m 字段? 列表不需要有子列表,因此該項目可以是列表的一部分或列表中的子列表(如文件夾/文件結構)

模型.py:

class List(models.Model):
    name = models.Charfield(max_length=125)
    date = models.DateField(default=django.utils.timezone.now)

class Store(models.Model) :
    name = models.CharField(max_length=128)
    store = models.ManyToManyField(List)

class Item(models.Model):
    item = models.CharField(max_length=128)
    price = models.FloatField(default=0.0)
    category = models.CharField(max_length=128, default=None)
    checked = models.BooleanField(default=None)
    store = models.ManyToManyField(List)

class SubList(models.Model):
    name = models.Charfield(max_length=256)
    parent_list = models.ForeignKey(List)
    items = models.ManyToManyField(Item)

我通常遵循這個規則來選擇兩個模型之間的關系是否是多對多的。 例如, Author和他/她寫的Book的關系可以建模為多對多字段,因為AuthorBook都有唯一的身份。 唯一的Book可以有一個或多個唯一的Author ,並且唯一的Author可以編寫一個或多個唯一的Book

另一方面,可以將同一本書視為Store中的Item 在這種情況下,它不再是唯一的,因為Item可以是該商店中的任何書或其他物品,但商店本身是唯一的身份,因此是一對多的關系。

就您而言,我認為您可以管理與ForeignKey或一對多字段的所有關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM