2011-12-12 126 views
0

我有這樣一個模型:循環中的字段多對多在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()我能接受用戶的俱樂部名稱。我無法在循環中使用此查詢。有沒有辦法使用這種查詢模型字段列表?

在此先感謝

+0

可能重複[Django的:在模板中顯示ManyToManyField(http://stackoverflow.com/questions/4270330/django-show-a-manytomanyfield-in-a-template) – DrTyrsa

+1

這是不是我的問題。我不想在模板中顯示查詢。我想在裝飾器中查詢在視圖中使用。我想做BULK QUERY。 – TheNone

+0

這個問題解釋瞭如何獲得實際的信息,而不是''。無論在哪裏,在視圖中還是在模板中。 – DrTyrsa

回答

5

這個字段是一樣的「對象」字段在我的資料類。添加.all()並將其轉換爲列表。

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

非常感謝! – TheNone