我正在制作模型,在哪里代表产品 但是我想添加一个带有Supplemental_products的字段,以便将其作为产品列表。
例如,
id: 1
product: dr pepper
complementary_products [chips, hotdogs]
id: 2
product: laptop
complementary_products" [mouse, usb_cable]
id: 3
product: chips
complementary_products [dr pepper, hotdogs]
我尝试了很多,但是当我开始在管理页面中添加产品时,会不断追加,如果我添加了3个项目,最后一个将具有所有前一个=(
class ProductModel(models.Model):
product_name = models.CharField(max_length=200)
complementary_products = models.ManyToManyField("self", blank=True)
如果我使用ForeingKey,则只能设置为一项=(
complementary_products = models.ForeignKey("self", on_delete=models.CASCADE, default=None, blank=True)
关于如何实现此目标的任何建议?谢谢大家
当我尝试添加第三个产品时,该字段已经具有2个预览 我确实获得了+号按钮来继续添加更多产品,但是我没有要删除的按钮,是因为Django的管理形式可能出了什么问题?
答案 0 :(得分:0)
如果我正确理解了您的问题,听起来好像您需要一张遍历表来进行许多操作。 docs在解释它方面做得很好,因此我在这里不再赘述。
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=128)
def __str__(self):
return self.name
class CompProduct(models.Model):
name = models.CharField(max_length=128)
products = models.ManyToManyField(Product, through='ProductsBelong')
def __str__(self):
return self.name
class ProductsBelong(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
comp = models.ForeignKey(CompProduct, on_delete=models.CASCADE)
date_added = models.DateField()
答案 1 :(得分:0)
class ProductModel(models.Model):
product_name = models.CharField(max_length=200, null=True)
complementary_products = models.ManyToManyField("self", blank=True) # , related_name="products")
如果设置related_name =参数,则可以告诉Django要在后台创建的表的名称。加上我不是按住Control键并单击“ complementary_products”列表