ViewSet dreate error:" model"需要为字段"字段"在此之前可以使用多对多关系

时间:2014-12-17 05:53:08

标签: django django-rest-framework

我正在尝试定义在POST /创建新API对象时要执行的自定义逻辑,但我收到错误:"<Appointment: apitest>" needs to have a value for field "appointment" before this many-to-many relationship can be used

class AppointmentViewSet(viewsets.ModelViewSet):
    queryset = Appointment.objects.all()
    serializer_class = AppointmentSerializer
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,
                      IsOwnerOrReadOnly,)
    def create(self, request):
            serializer = AppointmentSerializer(data=request.DATA)
            return Response(serializer.errors,
                    status=status.HTTP_400_BAD_REQUEST)
    def pre_save(self, obj):
            obj.service_recipient = self.request.user

1 个答案:

答案 0 :(得分:0)

您正在使用 Django REST Framework 2.x ,它对相关对象创建的支持非常有限。现在,您正在尝试创建一个反向关系(很可能通过外键或一对一),Django REST Framework 2.x实际上并不支持。

Django REST Framework 3.0 修复了我们以前在创建相关对象时遇到的很多问题,现在必须手动实现它。您可以在the release announcement中找到有关更改的更多信息,并确定如何在您的案例中实施这些更改。