[英]Django ManyToMany field get all values from an object without a 'for'
[英]Django ManyToMany all values by default
我有以下 model:
class Product(models.Model):
provinces = models.ManyToManyField('Province', related_name='formats')
默認情況下,產品可以在每個省份銷售。 我如何定義 model “產品”,以便默認創建的每個產品都具有所有省份?
謝謝!
使用默認密鑰。 您不能直接將默認模型值設置為像列表這樣的可迭代對象,因此將它們包裝在一個可調用對象中,正如 Django 文檔所建議的那樣: https : //docs.djangoproject.com/en/1.8/ref/models/fields/
def allProvinces():
return provincesList
provinces = models.ManyToManyField('Province', related_name='formats', default=allProvinces)
您不能直接將列表直接添加到 M2M,您應該首先獲取對象:
def allProvinces():
provinceList = Province.objects.all()
return provinceList
然后添加 default=allProvinces :)
從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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.