2017-03-24 11 views
0

私はFooオブジェクトを組織が所有しています。私は私の要求ハンドラでログインしているユーザーからの現在の組織を得る:Django RESTフレームワーク:既存の外部キーのデシリアライズが失敗します

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: null value in column "organization_id" violates not-null constraint

がどのように私はFooSerializerに現在のOrganizationを提供する必要がありますか?

答えて

関連する問題