簡體   English   中英

django rest Serializers如何表示

[英]django rest Serializers how to representation

在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__ 我該怎么做?

首先,在__str__中的TableFriend ,您需要實際傳遞一個字符串,如:

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

我假設您在User模型中有一個name字段。

要顯示朋友用戶名,您可以:

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

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

參考: 指定只讀字段

輸出現在將是這樣的:

[{"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>

參考: 對象。 str (個體經營)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM