2016-09-21 8 views
0

私には2つの質問があります。関係が存在する場合、どうすれば真を返すことができますか?たとえば私はポストモデルとコメントモデルも持っています、コメントは投稿するforeginKeyを持っています。今ポストシリアライズした後、私はこのDjango Rest Framework関係が存在する場合Trueを返します

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

そして、私の2番目の質問は、どのようにモデルの関係でフィールド名を変更されたようなものを持っていたいですか?ここでも投稿とコメントがあります。コメントのモデルでは、私は新しいコメントを追加するには、私は{:postIdHereポスト}でJSONデータを送信する際に今

post = models.ForeignKey(Post) 

のように投稿するキーをforeginています。 djangoモデルではなくdrfでpostIDだけポストを変更することは可能ですか?

私はあなたが私を理解することを願っています:) ベストレッドガード、 シエラン。あなたはまた、シリアライザの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

ありがとうございました!魅力的な作品!私だけが私の2番目の質問のためのresposneを取得し、私は平和的に眠ることができます:) – Sierran

+0

[create() '](http://www.django-rest-framework.org/api-guide/viewsets/#markingあなたのコメントのビューセット内のルーティングのための-extra-actions)。 docsでかなり簡単です。あなたが文書化されていない問題に遭遇した場合は教えてください。 – Brian

+0

私はpostIdを投稿することはできますが、apiはpostIdではなく{post:1}を返します。私はsource = postを使ってCharfieldを使ってみましたが、ドロップダウンから関連する投稿を選択する可能性は失われました。 – Sierran

関連する問題