我有一个具有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字段返回了一个数组,但显然不是。
感谢您的帮助。
答案 0 :(得分:1)
profile_city = models.Profile.objects.get(id=profile_id)
profile_city.cities
返回一个您不能迭代的经理类。
尝试使用此方法代替 profile_city.cities
profile_city.cities.all()