2016-09-21 4 views
0

두 가지 질문이 있습니다. 관계가 존재하는 경우 나는 어떻게 참을 수 있습니까? 예를 들어, 게시물 모델과 코멘트 모델도 있고, 코멘트에는 foreginKey가 게시되어 있습니다. 이제 게시물을 직렬화 후이 같은 싶습니다Django Rest Framework 관계가있는 경우 True를 반환합니다.

{ 
id: 2 
content: "My first post!" 
has-comments: True 
} 

내 두 번째 질문은 어떻게 모델 관계에서 필드 이름을 바꿉니 까? 다시 우리는 게시물과 코멘트가 있습니다. 코멘트 모델에서 나는 새로운 코멘트를 추가 내가 {: postIdHere 포스트}와 JSON 데이터를 보낼 때 지금

post = models.ForeignKey(Post) 

처럼 게시 키를 foregin있다. django 모델이 아닌 drf에서만 postID로 게시물을 변경할 수 있습니까?

나는 당신이 나를 이해하기를 바랍니다. 최고 Redgards, Sierran. 또한 시리얼 라이저의 Meta 클래스의 필드를 지정해야 할 수도 있습니다

from rest_framework import serializers 

class YourSerializer(Either Serializer or ModelSerializer...): 
    has_comments = serializers.SerializerMethodField() 
    @staticmethod 
    def get_has_comments(instance): 
     # Choose whichever one works for you. 
     # You did not specify some model names, so I am just making stuff up. 
     return instance.post_set.exists() 
     return Comment.objects.filter(post_id=instance.id).exists() 

: 내가 가지고 올 수

답변

1

가장 가까운 것은 시리얼이있는 사용자 정의 has_comments 필드 (보다는 has-comments)입니다. 처음 실행하면 프레임 워크가 정확히 어떻게 알려줄 것입니다.

+0

감사합니다. 매력처럼 작동합니다! 오직 두 번째 질문에 대한 답변을 얻을 수 있고 평화롭게 잠을 잘 수 있습니다. :) – Sierran

+0

[create()'] (http://www.django-rest-framework.org/api-guide/viewsets/#marking -extra-actions-for-routing)을 주석보기 세트에 추가하십시오. 문서에서 꽤 쉽습니다. 문서화되지 않은 문제가 발생하면 알려주십시오. – Brian

+0

그렇다면 postId를 게시 할 수는 있지만 api는 postId가 아닌 {post : 1} 여전히 리턴 할 것입니다. 소스가있는 Charfield를 사용하려고 시도하지만 드롭 다운에서 관련 게시물을 선택할 가능성이 없어집니다. – Sierran

관련 문제