Django ViewSet dreate错误:“模型”需要为字段“字段”设置一个值,然后才能使用此多对多关系

Django ViewSet dreate错误:“模型”需要为字段“字段”设置一个值,然后才能使用此多对多关系,django,django-rest-framework,Django,Django Rest Framework,我试图定义在发布/创建新API对象时要执行的自定义逻辑,但我收到错误:在使用此多对多关系之前,需要为field appointment设置一个值 您使用的是Django REST Framework 2.x,它对相关对象创建的支持非常有限。现在,您正试图通过外键或一对一创建反向关系,Django REST Framework 2.x实际上不支持这种关系 Django REST Framework 3.0修复了我们以前在相关对象创建中遇到的许多问题,现在它必须手动实现。您可以在中找到有关更改的更多

我试图定义在发布/创建新API对象时要执行的自定义逻辑,但我收到错误:在使用此多对多关系之前,需要为field appointment设置一个值

您使用的是Django REST Framework 2.x,它对相关对象创建的支持非常有限。现在,您正试图通过外键或一对一创建反向关系,Django REST Framework 2.x实际上不支持这种关系


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

Hi!我注意到您正在使用Django REST Framework 2.x。DRF 3已经出了一点,并且修复了相当多的bug,您可能需要考虑升级。
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