在 django 的多对多关系中添加额外的字段
Posted
技术标签:
【中文标题】在 django 的多对多关系中添加额外的字段【英文标题】:Add extra field in manytomany relationship in django 【发布时间】:2020-06-20 06:32:21 【问题描述】:我正在尝试创建我的应用程序的模型,但在布局中感到困惑
class Product(models.Model):
name = models.CharField(max_length=500, default=0)
short_code = models.CharField(max_length=500, default=0,unique=True)
class Kit(models.Model):
owner = models.ForeignKey(User, on_delete=models.CASCADE)
kit_name = models.CharField(max_length=500, default=0)
product = models.ManyToManyField(Product)
现在一个人可以在应用中添加多个产品,而一个 Kit 可以有多个产品,
问题从这里开始。我想将数量字段添加到Kit
模型,以便人们可以在套件中添加特定项目及其数量。我该怎么做?
【问题讨论】:
docs.djangoproject.com/en/3.0/topics/db/models/… 【参考方案1】:像这样扩展您的 Kit
模型:
class Kit(models.Model):
owner = models.ForeignKey(User, on_delete=models.CASCADE)
kit_name = models.CharField(max_length=500, default=0)
product = models.ManyToManyField(Product)
quantity = models.FloatField()
然后用户可以在form
中定义Product
及其quantity
。这就是您真正需要的所有内容来涵盖您呈现的设置。
更新您的评论
然后我会去寻找另一个像这样的关系:
class ProductQuantity(models.Model):
quantity = models.ManyToManyField(Product)
# and remove it from the Kit Model
所以每个Product
都可以链接到它的quantity
【讨论】:
但是我不能通过这个解决方案拥有每个product
的quantity
@RahulSharma 啊,从一开始就没有直接解决您的问题。在这种情况下,我会添加另一个关系,请参阅答案中的更新以上是关于在 django 的多对多关系中添加额外的字段的主要内容,如果未能解决你的问题,请参考以下文章