我有一个带有 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)
这是我的查询:
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”时,出现以下错误: “类型错误:‘ManyRelatedManager’对象不可迭代”。
我是 Django 新手,我以为 ManyToMany 字段返回一个数组,但显然不是。
感谢您的帮助。
最佳答案
profile_city = models.Profile.objects.get(id=profile_id)
profile_city.cities
返回一个无法迭代的管理器类。
试试这个而不是profile_city.cities
profile_city.cities.all()
关于python - Django ManyToMany 字段返回 None 但它有相关记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52428124/