2012-10-10 47 views
2

我有1個問題。 這是我的Django模型。(這只是例子)如何在查詢集中顯示外鍵django

class Users(models.Model): 
    username = models.Charfield() 


class CommunityBoard(models.Model): 
    user = models.ForeignKey(User) 
    title = models.CharField(max_length=30) 
    contents = models.TextField() 

我views.py

def detailCommuBoard(request): 
    returnValues = {} 
    returnValues.update(csrf(request)) 
    pk = request.POST['pk']; 
    detailContents = CommunityBoard.objects.filter(pk=pk) 
    returnValues = serializers.serialize('json', detailContents) 

    return HttpResponse(returnValues) 

然後使用後

{ pk = 1 } 

發送數據(NSDictionary的格式)到服務器,我得到了iPhone中的序列化數據。(json格式)

{ 
    fields =   { 

     contents = "\Uc5ed\Uc2dc \Ud30c\Uc774\Uc36c"; 
     title = "\Ud30c\Uc774\Uc36c \Ud504\Ub85c\Uadf8\Ub798\Ubc0d";   
     user = 1; 

    };   
    pk = 11; 
} 

我想顯示用戶模型的用戶名,當進行查詢時,而不是用戶模型的PK。

請幫幫我。

回答

3

我認爲你需要改變Queryset以包含這些信息。

detailContents = CommunityBoard.objects.filter(pk=pk).values_list('contents', 'title', 'user__username') 
returnValues = serializers.serialize('json', detailContents) 
+0

謝謝的你的建議。但是使用.values_list的輸出是元組。 無法序列化爲json。 - > AttributeError:'tuple'對象沒有屬性'_meta' – Haibane

+0

detailContents = CommunityBoard.objects.filter(pk = pk).values_list('contents','title','user__username') 這是 Haibane

+0

感謝您的反饋。我以爲serializar在iterables上工作,我的錯。如果你使用值而不是values_list,可能會起作用,但我認爲Rohan解決方案比我的Python解決方案更多,所以... – esauro

0

您可以使用natural keys during serialization

所以,你可以試試這個:

returnValues = serializers.serialize('json', detailContents, 
            use_natual_keys=True) 
+0

感謝您的評論。我會試試看。 :D – Haibane

+0

是否有效?爲你還是不? – Clayton