2016-11-21 10 views
0

ジャンゴ残りシリアライザどのように表現Djangoのモデルで

class TableFriend(models.Model): 
    user = models.ForeignKey(User, related_name="main_user", default="newbie") 
    friend = models.ForeignKey(User, related_name="friend_for_user", default="newbie") 
    date = models.DateTimeField(auto_now=True) 

    def __str__(self): 
     return '%s %s %s' % (self.user, self.friend, self.date) 

Djangoの残りのコード

class FriendSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = TableFriend 
     fields = ('user', 'friend', 'date') 

出力:

[{"user":1,"friend":3,"date":"2016-11-10T15:12:33.189570Z"},{"user":1,"friend":2,"date":"2016-11-10T15:11:56.936230Z"}] 

しかし、私は友人の名前を必要とします。 私は"friend":usernameを参照してください。 djangoモデルの__str__も見たいです。 どうすればいいですか?私はあなたがUserモデルでnameフィールドを持っていると仮定してい

def __str__(self): 
    return '%s %s %s' % (self.user.name, self.friend.name, self.date) 

答えて

0

まず第一には、TableFriendであなたの__str__に、あなたが実際のような文字列を渡す必要があります。

class FriendSerializer(serializers.ModelSerializer): 
    friend_username = serializers.ReadOnlyField(source='friend.username') 

    class Meta: 
     model = TableFriend 
     fields = ('user', 'friend', 'date') 

参考:Specifying read only fields

出力は今のようになります:

[{"user":1,"friend":3,"friend_username":"<the_username>","date":"2016-11-10T15:12:33.189570Z"}...] 

__str__は、の文字​​列表現である、あなたはどうしたら、友人のユーザー名を表示するには

オブジェクト。 これを見るには、TableFriend.objects.first()のようにします。 これは<TableFriend: my_name friend_name 2016-11-21 23:54:57.060029>

文献などの出力与えるだろう:object.str(self)

+0

おかげで、仕事のために真のフィールド>>フィールド=( 'ユーザー'、 '友人'、 'friend_username'、 '日付') – pirks

関連する問題