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

标签 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)

这是我的查询:

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/

相关文章:

python - Django 中带有前缀的表单中的关键错误

python - django 将关系添加到用户模型

django - 如何在 django rest 框架中包含模型序列化的相关字段?

python - 使用列表根据多列中的值有条件地填充新列

python - 作为启动脚本运行时结束 Python 脚本?

python - 如何删除数据框中的重复值并计算耗时?

django - 创建模型实例时未设置BooleanField默认值

python - add_swig_library 的 undefined symbol

django测试重定向失败

django - 如何在 Django 中同时支持新旧数据库模式?