UserProfile を含む少し複雑なモデル構造が django にあります。
class UserProfile(models.Model):
shoppinglist = models.ManyToManyField(Offer)
user = models.OneToOneField(User)
follows = models.ManyToManyField('self', related_name='followers', symmetrical=False, blank=True)
とオファー
class Offer(models.Model):
description = models.CharField(max_length=200)
これが意味することは、各ユーザーが他のユーザーをフォローして、好きなオファーで買い物リストを作成できるということです。
このように、フォローしている人の買い物リストにオファーがあるかどうかを確認するクエリを作成できます
profile.follows.filter(shoppinglist=offer)
UserProfile オブジェクトのクエリセットを返します。
今、私はこの 2 つのモデルを表す OfferResource と UserProfileResource を Tastypie API に持っています。
私がする必要があるのは、オファーのリストを取得するたびに、そのオファーの「いいね」をフォローしている人のリストを含むカスタム フィールドを各オファーに追加することです。
offer: {
description: 'Something'
liked_by: [
{ ... },
{ ... }
]
}
「脱水」メソッドをオーバーライドしてカスタムフィールドを追加できることは知っていますが、追加すると
def dehydrate(self, bundle):
bundle.data['liked_by'] = profile.follows.filter(shoppinglist=bundle.obj)
like_by フィールドの結果のユーザーのリストは、シリアル化または脱水されません。
何か案は?