我有一个网站,我想在其中显示基本的html表,如下所示:
Product_Name | Attribute_1 | Attribute_2
-----------------------------------------
Soap | True | True
Shampoo | False | True
所以我创建了具有ManyToMany关系的类Product
和Attribute
。
Models.py
class Product(models.Model):
name = models.CharField(max_length=10)
attributes = models.ManyToManyField(on_delete='CASCADE')
class Attribute(models.Model):
name = models.CharField(max_length=1, default='N')
所以我有两个Attribute实例-Attribute_1和Attribute_2。
当我创建新属性(Attribute_3)时,是否可以通过指向新属性的链接来更新我所有产品实例的关系?
我知道Django为m2m关系创建了一个贯通表。根据{{3}},我知道我可以做类似的事情:
for prod_obj in Product.objects.all():
prod_obj.add(new_attribute_object)
但是如何确保每次创建属性对象时自动/一致地发生这种情况?
答案 0 :(得分:1)
您应该为save
模型编写一个自定义Attribute
方法,a)检查一下是否Attribute
对象是第一次创建的; b)如果是,则将Attribute
添加到数据库中的每个Product
。有关编写自定义save
方法的更多信息,请参见this post。