簡體   English   中英

Django ManyToMany 默認所有值

[英]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)

您需要使用post_save信號。

不能使用默認的字段選項多到可以為上述領域在這里

您不能直接將列表直接添加到 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM