我有以下模型:
class Product(models.Model): provinces = models.ManyToManyField('Province', related_name='formats')
默认情况下,产品可以在每个省销售。我如何定义模型“产品”,使每个创建的产品默认具有所有省?谢谢你!
mf98qq941#
使用default键。你不能直接将默认模型值设置为列表之类的可迭代对象,所以把它们 Package 在一个可调用对象中,就像Django文档建议的那样:https://docs.djangoproject.com/en/1.8/ref/models/fields/
def allProvinces(): return provincesList provinces = models.ManyToManyField('Province', related_name='formats', default=allProvinces)
qaxu7uf22#
您需要使用post_保存信号。您不能使用默认字段选项用于多对多字段,如here所述
wlzqhblo3#
您不能直接将列表直接添加到M2M,您应该首先获取对象:
def allProvinces(): provinceList = Province.objects.all() return provinceList
然后添加默认值= allProvince:)
ve7v8dk24#
我从https://stackoverflow.com/a/32068983/1581629展开,执行以下操作:
class Product(models.Model): ... def save(self, *args, **kwargs): created_flag = False if not self.pk: created_flag = True super().save(*args, **kwargs) if created_flag: self.provinces = Province.objects.all()
4条答案
按热度按时间mf98qq941#
使用default键。你不能直接将默认模型值设置为列表之类的可迭代对象,所以把它们 Package 在一个可调用对象中,就像Django文档建议的那样:https://docs.djangoproject.com/en/1.8/ref/models/fields/
qaxu7uf22#
您需要使用post_保存信号。
您不能使用默认字段选项用于多对多字段,如here所述
wlzqhblo3#
您不能直接将列表直接添加到M2M,您应该首先获取对象:
然后添加默认值= allProvince:)
ve7v8dk24#
我从https://stackoverflow.com/a/32068983/1581629展开,执行以下操作: