簡體   English   中英

Django ManyToMany字段從沒有“ for”的對象獲取所有值

[英]Django ManyToMany field get all values from an object without a 'for'

是否可以在不使用“ for”的情況下從對象獲取ManyToMany的值?

models.py

class Citizenship(models.Model):
    name = models.CharField(max_length=100)

    class Meta:
        verbose_name_plural = "Citizenship"

    def __str__(self):
        return self.name

class Anexa(models.Model):
    name = models.CharField(max_length=150, help_text="3")
    citizenship = models.ManyToManyField(Citizenship, help_text="4")

我有一個名為Alex的Anexa對象,並且有4個該對象的公民身份。 我正在尋找與此等效的東西:

for citizenships in x.citizenship.all():
    print(citizenships.name)

您將得到的最接近的是一個值列表https://docs.djangoproject.com/en/1.11/ref/models/querysets/#values-list ,您仍然必須循環遍歷以單獨打印。

x.citizenship.values_list('name', flat=True)

如果要抽象化循環,可以在模型上創建一個方法:

class Anexa(models.Model):
    def print_citizens_names(self):
        for name in self.citizenship.values_list('name', flat=True):
            print(name)

然后,您可以在代碼庫中執行以下操作:

x.print_citizens_names()

這是答案:

print(', '.join(x.citizenship.values_list('name', flat=True))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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