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