この記事は 約 0分55秒 で読めます。
あるモデルと1対1で連携している別のモデルのデータをJSONに出力する方法を探していたところ、簡単にできたのでログに残します。
例えば、記事モデル(Article)と投稿者(Author)がForeignKeyで連携していたとします。
1 2 3 4 5 6 7 |
class Article(models.Model): author = models.ForeignKey(User, on_delete=models.CASCADE) title = models.CharField(max_length=200) text = models.TextField() . . . |
記事一覧をJSONで出力する際に投稿者の名前などの属性も一緒に出力させたい場面もあるかと思います。
Django REST frameworkではそういう場合にモデルに名前を返すメソッドを追記するだけで簡単に実装できてしまいます。
メソッドを追記する
投稿者の名前を出力させたい場合、まずはモデルには以下のように書きます。
1 2 |
def user_name(self): return self.author.username |
シリアライザーに登録する
その後、シリアライザーに登録します。
1 2 3 4 5 6 7 |
class Meta: model = Heading fields = ( 'title', 'text', 'user_name', # 追記 ) |
簡単ですね。本当に驚くばかりです。
以上です。