NOT NULL约束失败:设备\U api_设备组所有者

2024-05-23 20:14:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我在发布组时收到not null约束失败错误。我该怎么修?我不想在api中显示用户,所以我没有在序列化程序字段中使用它。我必须强制加进去吗?在

这是我的模型、序列化程序和APIView

class DeviceGroup(models.Model):
    token = models.UUIDField(default=uuid.uuid4, unique=True, editable=False)
    name = models.CharField(max_length=250, blank=False, null=False)
    owner = models.ForeignKey(User, blank=False, null=False)


class DeviceGroupSerializer(serializers.ModelSerializer):
    id = serializers.UUIDField(source='token', format='hex', read_only=True)
    class Meta:
        model = DeviceGroup
        fields = ['id','name']


class DevicesGroupsAPIView(APIView):
    permission_classes = (permissions.IsAuthenticated,)
    serializer_class = DeviceGroupSerializer

    def get_object(self, user, token):
        try:
            return BaseDevice.objects.filter(owner=user).get(token=token)
        except ObjectDoesNotExist:
            return error.RequestedResourceNotFound().as_response()

    def get(self, request, format=None):
        """
            Returns a list of groups
        """
        reply = {}
        try:
            groups = DeviceGroup.objects.filter(owner=request.user)
            reply['data'] = DeviceGroupSerializer(groups, many=True).data
        except:
            reply['data'] = []
        return Response(reply, status.HTTP_200_OK)

    def post(self, request, format=None):
        """
        create a new group
        """
        print('request.data', request.data)
        print('user', request.user)
        serializer = DeviceGroupSerializer(data=request.data)
        print('serializer', serializer)
        if serializer.is_valid():
            serializer.save()
            return Response(serializers.data, status.HTTP_200_OK)
        return Response(serializer.errors, status.HTTP_204_NO_CONTENT)

Tags: tokenfalsetruedatareturnmodelsrequestreply
1条回答
网友
1楼 · 发布于 2024-05-23 20:14:12

仔细看,用户不在请求数据公司名称:

serializer = DeviceGroupSerializer(data={
  'name':request.data['name'],
  'owner':request.user.id,
})

还要检查序列化程序是否允许使用所有者

^{pr2}$

相关问题 更多 >