2016-11-27 5 views
0

私はdjango rest frameworkの新人です。Django RESTフレームワークでカスタムブール値フィールドを作成する

class Action(models.Model): 
    type = models.CharField() 
    bonus = models.IntegerField() 

class User(models.Model): 
    auth = models.OneToOneField(AuthUser) 
    display_name = models.CharField() 

class Comment(models.Model): 
    contributor = models.ForeignKey(User) 
    content = models.TextField() 

class Activity(models.Model): 
    user = models.ForeignKey(User) 
    target_comment = models.ForeignKey(Comment) 
    action = models.ForeignKey(Action) 

私は私のAPIのエンドポイントの1つは、このような何かを返すことができるようにしたい:
私のモデルの関連部分は、この(簡体字)のようなものに見える

{ 
    ... 
    "comments": 
    [ 
     { 
      "id": 1, 
      ... 
      "curr_user_upvoted": true 
     }, 
     ... 
    ] 
} 

を私は、クエリを知っています私は "curr_user_upvoted"の値を取得するために実行する必要がありますが、API表現の一部にする方法はわかりません。
私はカスタムリレーショナルフィールドを作成する方法を知っていますが、 "curr_user_upvoted"はフィールドでもリレーションでもないので役立ちません。

答えて

1

SerializerMethodFieldを作成してこれを行うことができます。これは、必要な値を返すシリアライザクラスの単なるメソッドです。

メソッド名のデフォルトはget_で、その後にフィールド名を指定する必要があります。ただし、フィールドに明示的なmethod_nameパラメータを渡すこともできます。

関連する問題