实现下一种情况的最佳方法是什么:
我需要在调用某个对象端点时将isCalled
更改为True。
例如api/objects/1
我的模特:
class Object (models.Model):
someObject = models.ForeignKey(User, on_delete=models.CASCADE)
isCalled = models.BooleanField(default=False)
# dateCalled = models.DateTimeField(auto_now=True, null=True)
我的views.py:
class SingleMessageView(generics.RetrieveUpdateDestroyAPIView):
queryset = Message.objects.all()
serializer_class = MessageSerializer
# def get(self)? : #function to implement the solution should be here?
有可能吗?什么是实现它的最有效方法?将解决方案放在何处(views.py/ serializers.py)?谢谢!
答案 0 :(得分:1)
覆盖 retrieve()
方法
from rest_framework.response import Response
class SingleMessageView(generics.RetrieveUpdateDestroyAPIView):
queryset = Message.objects.all()
serializer_class = MessageSerializer
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
instance.isCalled = True
instance.save()
serializer = self.get_serializer(instance)
return Response(serializer.data)