2012-10-10 2 views
2

질문이 1 개 있습니다. 이러한 내 장고 모델입니다. 그때 queryset django에 외래 키를 표시하는 방법

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와 형식)을 보내

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


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

(이건 그냥 예입니다) , 아이폰에 시리얼 데이터가 있습니다. (json 형식)

{ 
    fields =   { 

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

    };   
    pk = 11; 
} 

사용자 모델의 pk가 아닌 쿼리 세트를 만들 때 사용자 모델의 사용자 이름을 표시하려고합니다.

도와주세요.

답변

3

정보를 포함하도록 쿼리 세트를 변경해야한다고 생각합니다.

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 ('내용', '제목', '사용자 _ 사용자 이름') 이것은 Haibane

+0

의견을 보내 주셔서 감사합니다. 나는 serializar가 iterables에서 작동한다고 생각했다. 내 잘못. 아마 values_list 대신 값을 사용하면 효과가있을 것입니다. 그러나 로한 솔루션은 광산보다 더 파이썬 스톤이라고 생각합니다. – esauro

0

natural keys during serialization을 사용할 수 있습니다.

그래서 당신이 시도 할 수 있습니다 :

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

Thank you comment. 시도해 볼게. : D – Haibane

+0

그것이 효과가 있었습니까? 너 아니면하지? – Clayton

관련 문제