[英]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
的關系可以建模為多對多字段,因為Author
和Book
都有唯一的身份。 唯一的Book
可以有一個或多個唯一的Author
,並且唯一的Author
可以編寫一個或多個唯一的Book
。
另一方面,可以將同一本書視為Store
中的Item
。 在這種情況下,它不再是唯一的,因為Item
可以是該商店中的任何書或其他物品,但商店本身是唯一的身份,因此是一對多的關系。
就您而言,我認為您可以管理與ForeignKey
或一對多字段的所有關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.