如何在Django-Rest

时间:2018-10-26 19:04:17

标签: django django-rest-framework

我想为一所学校命名为“调查API”,其名称为具有Dango-Rest-Framework的教师。我想创建一种方法,以便用户可以张贴老师的姓名(或教师模型中老师的ID)并自动在该老师的分数字段中添加一个点。

这是我的老师模型课:

class Teacher(models.Model):
     name = models.CharField(max_length=255)
     description = models.TextField(blank=True,null=True)
     voting = models.IntegerField(default=0)

和views.py:

class TeachersViewSet(viewsets.ModelViewSet):
    queryset = models.Teachers.objects.all()
    serializer_class = serializers.TeachersSerializer
    authentication_classes = (TokenAuthentication,)

所以我想要的是前端用户可以调用api并告诉该教师的投票字段加1分(他们不需要提及数字1,因为api总是必须为该点加1分每个请求)。是否必须创建一个新的视图集?老实说,我不知道从哪里开始。因此,我们将不胜感激。

2 个答案:

答案 0 :(得分:3)

检出DRF的routing for extra actions。我发现它超级有用。对于您的情况,您可以添加以下内容:

dig

假设您使用的是DRF的标准路由,这将沿class TeachersViewSet(viewsets.ModelViewSet): ... @action(detail=True) def vote(self, request, pk=None): Teacher.objects.filter(pk=pk).update(voting=F('voting') + 1) return Response() 的行提供URL。当然,这里有很多修改,但这是一个起点。

答案 1 :(得分:1)

const lastOne = keysToSameValueAsKeys("tic", "tac", "toe"); // const lastOne: {tic: "tic", tac: "tac", toe: "toe"}; 公开为一个API,该API可以接收教师ID并为其添加一个投票

覆盖ViewSet's Update method方法。

update