Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django REST框架:反序列化现有外键失败_Python_Django_Django Rest Framework - Fatal编程技术网

Python Django REST框架:反序列化现有外键失败

Python Django REST框架:反序列化现有外键失败,python,django,django-rest-framework,Python,Django,Django Rest Framework,我有一个组织拥有的Foo对象。我从请求处理程序中的登录用户处获取当前组织: models.py: class Organization(models.Model): name = models.CharField(max_length=255) class Foo(models.Model): ... some other fields ... organization = models.ForeignKey(Organization, on_delete=models

我有一个组织拥有的Foo对象。我从请求处理程序中的登录用户处获取当前组织:

models.py:

class Organization(models.Model):
    name = models.CharField(max_length=255)

class Foo(models.Model):
    ... some other fields ...
    organization = models.ForeignKey(Organization, on_delete=models.CASCADE)
serializers.py:

class FooSerializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    organization = OrganizationSerializer(read_only=True)

    """ Create and return a new instance, given the validated data """
    def create(self, validatedData):
        return OverlayDesign.objects.create(**validatedData)

    """ Update and return an existing instance, given the validated_data """
    def update(self, instance, validatedData):
        instance.organization = validatedData.get('organization', instance.organization)
        instance.save()
        return instance
views.py:

def createFoo(request):
    data = JSONParser().parse(request)

    # Get the organization of the logged-in user
    data["organization"] = OrganizationSerializer(request.user.account.organization).data

    serializer = FooSerializer(data=data)
    if serializer.is_valid():
        serializer.save()
        return JSONResponse(serializer.data, status=201)
    return JSONErrorResponse(serializer.errors, status=400)
当我创建一个新的Foo时,我希望它属于当前组织。问题是我不明白为什么组织没有反序列化?无论我做什么,我都会得到:

django.db.utils.IntegrityError:列organization_id中的null值违反了not null约束


如何将当前组织传递给FooSerializer?

OrganizationSerializer设置为只读选项=>您将无法获得与当前组织匹配的任何内容

你应该看看: