在Django模型中循环ManyToMany字段
我有一个这样的模型:
class MyProfile(models.Model):
club = models.ManyToManyField(Club, default=None)
city = models.ManyToManyField(City, default=None)
.
.
在视图中:
user = User.objects.get(pk=id)
profile = MyProfile.objects.select_related().get(user=user)
比如说,使用 profile.club.select_related()
我可以找到用户的俱乐部。但是我想在循环中这样做。
fileds = [car, club]
for f in fileds:
print getattr(profile, f)
输出中我得到了 <django.db.models.fields.related.ManyRelatedManager object at 0x9876545>
,但是通过 profile.club.select_related()
我可以获取到用户的俱乐部名称。我不能在循环中使用这个查询。有办法对模型字段的列表使用这样的查询吗?
提前谢谢你!
1 个回答
6
这些字段和MyProfile类中的“对象”字段是一样的。这里加上了.all(),然后把结果转换成列表。
fields = [car, club]
for f in fields:
z = getattr(profile, f)
print list(z.all())