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

时间:2018-09-20 15:02:22

标签: python django django-models

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

这是我的模特

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)

这是我的查询

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

print(profile_city.id, ' ', profile_city.name, ' ', profile_city.cities)

这是控制台中的结果:

1   Quintana Roo   GeneralApp.City.None

当我尝试遍历“ Profile.cities”时,出现以下错误: “ TypeError:“ ManyRelatedManager”对象不可迭代”。

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

profile_city.cities返回一个您不能迭代的经理类。

尝试使用此方法代替 profile_city.cities

profile_city.cities.all()