Django ManyToMany 字段返回 None 但它有相关记录

Jua*_*rez 2 python django django-models

我有一个带有 ManyToMany 字段的模型,但是当我进行查询时,该字段None即使在数据库中有值也会返回(我已经使用 Django Admin util 检查了它)。

这是我的模型:

class Profile(models.Model):
    name = models.CharField(max_length=50, unique=True, verbose_name=_('Name'))
    cities = models.ManyToManyField(City, related_name='profiles', verbose_name=_('City'))

    class Meta:
        verbose_name = _('Profile')
        verbose_name_plural = _('Profiles')

    def __str__(self):
        return "[{}]{}".format(self.name, self.cities)
Run Code Online (Sandbox Code Playgroud)

这是我的查询:

profile_city = models.Profile.objects.get(id=profile_id)

print(profile_city.id, ' ', profile_city.name, ' ', profile_city.cities)
Run Code Online (Sandbox Code Playgroud)

这是控制台中的结果:

1   Quintana Roo   GeneralApp.City.None
Run Code Online (Sandbox Code Playgroud)

当我尝试遍历“Profile.cities”时,出现此错误:“TypeError: 'ManyRelatedManager' object is not iterable'。

我是 Django 的新手,我认为 ManyToMany 字段返回了一个数组,但显然不是。

谢谢你的帮助。

Abh*_*h K 7

profile_city = models.Profile.objects.get(id=profile_id)

profile_city.cities 返回一个不能迭代的管理器类。

试试这个而不是profile_city.cities

profile_city.cities.all()
Run Code Online (Sandbox Code Playgroud)