循环在django模型中的ManyToMany字段中

时间:2011-12-12 12:03:28

标签: python django

我有一个这样的模型:

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 个答案:

答案 0 :(得分:5)

此字段与MyProfile类中的“objects”字段相同。添加.all()并将其强制转换为列表。

fields = [car, club]
for f in fields:
    z = getattr(profile, f)
    print list(z.all())