リバース関連のモデルのフィールドを含むクエリをシリアル化する方法を理解できません。私のモデルはこのように見えます。すべての投票が単一のアルバムにリンクされている:私が何をしたいのですがどのようなDjango - 関連するモデルからシリアル化されたフィールドを取得
# models.py
class Album(models.Model):
name = models.CharField(max_length=50)
class Vote(models.Model):
album = models.ForeignKey(Album, on_delete=models.CASCADE)
user_vote = models.BooleanField(default=0)
は、すべてのアルバムのオブジェクトだけでなく、そのアルバムに起因票の合計を返すクエリを実行しています。それは十分に簡単ですが、私は、クエリをシリアル化するとき、「total_votes」フィールドが失われます。
# views.py
# this works fine
query = Album.objects.annotate(total_votes = Sum(vote__user_vote))
# after serialization, I lose the field "total_votes"
serialized = serializers.serialize('json', list(query))
return serialized
残念ながら、フィールド「total_votesは、」以来、シリアライズされた結果には表示されません、Djangoのドキュメントによると、「のみモデル上でローカルに定義されているフィールドがシリアル化されます。
私の質問は、次のシリアライズされた結果を得るにはどうすればいいですか(アビーロードに100票、アストラルウィークに150票があるとします)。どんな助けでも大歓迎です。
[
{
"pk": 1,
"model": "app.album",
"fields": {
"name": "Abbey Road",
"total_votes": 100
},
{
"pk": 2,
"model": "app.album",
"fields": {
"name": "Astral Weeks",
"total_votes": 150
},
...
]