我在 django 中有一个稍微复杂的模型结构,其中包括一个 UserProfile
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 对象的查询集。
现在,我的美味派 API 中有代表这两个模型的 OfferResource 和 UserProfileResource。
我需要做的是,每当我获得优惠列表时,为每个优惠添加一个自定义字段,其中包含我关注的“喜欢”该优惠的人员列表。
offer: {
description: 'Something'
liked_by: [
{ ... },
{ ... }
]
}
我知道我可以覆盖“脱水”方法来添加自定义字段,但如果我添加
def dehydrate(self, bundle):
bundle.data['liked_by'] = profile.follows.filter(shoppinglist=bundle.obj)
like_by 字段中生成的用户列表未序列化或脱水。
有任何想法吗?