このための適切なGoogle検索を見つけることができないようですので、ここに行きます:
シリアライザーにフィールドがあります:
likescount = serializers.IntegerField(source='post.count', read_only=True)
これは、すべての関連フィールド「post」をカウントします。
次に、メソッドの一部としてそのフィールドを使用します。
def popularity(self, obj):
like = self.likescount
time = datetime.datetime.now()
return like/time
これは可能ですか?
post.count
は投稿のいいね!の数を測定するために使用されており、実際に人気の方法で整数をタイムスタンプで割るつもりはないので、これを試してください:
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
ただし、これをモデルのプロパティにすることをお勧めします
あなたのモデルで:
@property
def popularity(self):
likes = self.post.count
time = #hours since created
return likes / time if time > 0 else likes
次に、汎用の Field を使用して、シリアライザーでそれを参照します。
class ListingSerializer(serializers.ModelSerializer):
...
popularity = serializers.Field(source='popularity')