Django ManyToMany默认为所有值

时间:2015-07-24 18:55:49

标签: python django django-orm

我有以下型号:

class Product(models.Model):
    provinces = models.ManyToManyField('Province', related_name='formats')

默认情况下,产品可以在每个省份销售。如何定义模型“产品”,以便创建的每个产品默认都包含所有省份?

谢谢!

3 个答案:

答案 0 :(得分:4)

使用默认密钥。您不能直接将默认模型值设置为像列表一样的迭代,因此将它们包装在可调用的中,如Django文档所述:https://docs.djangoproject.com/en/1.8/ref/models/fields/

def allProvinces():
    return provincesList

provinces = models.ManyToManyField('Province', related_name='formats', default=allProvinces)

答案 1 :(得分:1)

你不能直接向M2M添加列表,你应该先获取对象:

def allProvinces():
    provinceList = Province.objects.all()
    return provinceList

然后添加 default=allProvinces :)

答案 2 :(得分:0)

您需要使用post_save信号。

您不能为here

中提到的多对多字段使用默认字段选项