Django ManyToMany 字段从没有“for”的对象中获取所有值

ale*_*lex 2 python django manytomanyfield

是否可以在不使用“for”的情况下从对象中获取 ManyToMany 的值?

模型.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")
Run Code Online (Sandbox Code Playgroud)

我有一个名为 Alex 的 Anexa 对象,我有这个对象的 4 个公民身份。我正在寻找与此等效的东西:

for citizenships in x.citizenship.all():
    print(citizenships.name)
Run Code Online (Sandbox Code Playgroud)

小智 7

您将获得的最接近的是值列表https://docs.djangoproject.com/en/1.11/ref/models/querysets/#values-list,您仍然需要循环遍历以单独打印。

x.citizenship.values_list('name', flat=True)
Run Code Online (Sandbox Code Playgroud)

  • 您不需要 for 循环来打印它:`print(', '.join(x.citizenship.values_list('name', flat=True))` 应该可以正常工作。 (2认同)