簡體   English   中英

Django Rest 框架序列化器 - 返回相關字段

[英]Django Rest Framework Serializer - return related field

我有一個 model 與主 model 具有一對一的關系:

class User(models.Model):
    id = models.BigIntegerField(primary_key=True)
    username = models.CharField(max_length=100, blank=True)

class AggregatedStats(models.Model):
    user_id = models.ForeignKey('User', on_delete=models.DO_NOTHING, unique=True)
    followers_30d = models.BigIntegerField(blank=True)

我編寫了以下序列化程序:

class UserSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = User
        fields = ['id', 'username', 'followers']

class AggregatedStatsSerializer(serializers.HyperlinkedModelSerializer):

    username = UserSerializer(source='user.username')

    class Meta:
        model = AggregatedStats
        fields = ['followers_30d', 'username']

我試圖從User model 返回username ,但無論我試圖得到它,我能做的最好的就是從用戶那里獲取超鏈接的相關字段,而不是實際的“用戶名”屬性。 這個要怎么退貨?

您可以簡單地創建一個字段並返回它:

class AggregatedStatsSerializer(serializers.HyperlinkedModelSerializer):

    username = SerializerMethodField()

    class Meta:
        model = AggregatedStats
        fields = ['followers_30d', 'username']

    def get_username(self, obj):
        return obj.user_id.username

暫無
暫無

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

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