Django Serializer Method Field

后端 未结 1 1451
离开以前
离开以前 2021-01-30 17:03

Can\'t seem to find the right google search for this so here it goes:

I have a field in my serializer:

likescount = serializers.IntegerField(source=\'pos         


        
1条回答
  •  长情又很酷
    2021-01-30 17:25

    assuming post.count is being used to measure the number of likes on a post and you don't actually intend to divide an integer by a timestamp in your popularity method, then try this:

    use a SerializerMethodField

    likescount = serializers.SerializerMethodField('get_popularity')
    
    def popularity(self, obj):
        likes = obj.post.count
        time = #hours since created
        return likes / time if time > 0 else likes
    

    however I would recommend making this a property in your model

    in your model:

    @property
    def popularity(self):
        likes = self.post.count
        time = #hours since created
        return likes / time if time > 0 else likes
    

    then use a generic Field to reference it in your serializer:

    class ListingSerializer(serializers.ModelSerializer):
        ...
        popularity = serializers.Field(source='popularity')
    

    0 讨论(0)
提交回复
热议问题