【问题标题】:Django ManyToMany all values by defaultDjango ManyToMany 默认所有值
【发布时间】:2015-10-15 13:23:02
【问题描述】:

我有以下型号:

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

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

谢谢!

【问题讨论】:

标签: python django django-orm


【解决方案1】:

使用默认键。您不能直接将默认模型值设置为列表之类的可迭代对象,因此请按照 Django 文档的建议将它们包装在可调用对象中:https://docs.djangoproject.com/en/1.8/ref/models/fields/

def allProvinces():
    return provincesList

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

【讨论】:

【解决方案2】:

您需要使用post_save 信号。

here 所述,您不能对多对多字段使用默认字段选项

【讨论】:

    【解决方案3】:

    您不能直接将列表直接添加到M2M,您应该先获取对象:

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

    然后添加 default=allProvinces :)

    【讨论】:

      猜你喜欢
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 2017-06-06
      • 2017-08-21
      • 2016-04-08
      • 1970-01-01
      相关资源
      最近更新 更多