当在多人模型中创建新的目标实例时,推荐的更新源模型的每个实例的方法是什么?

问题描述 投票:0回答:1

我有一个网站,我想显示一个基本的html表,如下所示:

Product_Name | Attribute_1 | Attribute_2
----------------------------------------- 
Soap         | True        | True 
Shampoo      | False       | True

所以我创建了具有ManyToMany关系的类ProductAttribute

models.朋友

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_1和Attribute_2。

当我创建一个新属性(Attribute_3)时,有没有办法可以通过指向新属性的链接更新所有Product实例的关系?

我知道Django为m2m关系创建了一个直通表。根据docs,我知道我可以做类似的事情:

for prod_obj in Product.objects.all(): prod_obj.add(new_attribute_object)

但是,每次创建属性对象时,如何确保自动/一致地发生这种情况?

python django manytomanyfield
1个回答
1
投票

你应该为你的save模型编写一个自定义的Attribute方法,a)检查是否是第一次创建Attribute对象;和b)如果是这样,将Attribute添加到数据库中的每个Product。有关编写自定义save方法的更多信息,请参阅this post

© www.soinside.com 2019 - 2024. All rights reserved.