【发布时间】:2018-07-13 21:43:01
【问题描述】:
我有一个模型:
User 是来自django.contrib.auth.models 的 django 用户模型
# drink/models.py
class Drink(models.Model):
name = models.CharField(max_length=32)
bartender = models.ForeignKey('bartender.Bartender')
# bartender/models.py
class Bartender(models.Model):
name = models.CharField(max_length=64)
owner = models.ForeignKey(User)
# property/models.py
class Rating(models.Model):
bartender = models.ForeignKey('bartender.Bartender')
owner = models.ForeignKey(User)
我使用 django rest 框架,并且想要一个序列化器字段:
# bartender/serializers.py
class BartenderSerializer(serializers.ModelSerializer):
rating = serializers.IntegerField(source='get_rating', read_only=True)
class Meta:
model = Bartender
fields = []
我的视图集是
class BartenderViewset(viewsets.ModelViewSet):
queryset = Bartender.objects.all()
serializer_class = BartenderSerializer
如何将模型方法添加到我的 Bartender 模型中,以便它为 User 进行调用的任何对象返回 Rating 对象。
我尝试对我的Bartender 类进行此修改:
# bartender/models.py
class Bartender(models.Model):
name = models.CharField(max_length=64)
owner = models.ForeignKey(User)
def get_rating(self):
return Rating.objects.get(bartender=self.id, owner=self.request.user)
但是self 没有请求。因此,我想知道如何实现它,以便可以通过 drf 视图集调用它。
【问题讨论】:
标签: python django django-rest-framework