2015-04-22 113 views
1

我有3個連接的模型:User - > UserProfile - > BuyerProfile,當用戶創建一個帳戶時,我想要創建一個User,然後是UserProfile,然後是BuyerProfile。我使用的是ModelSerializer,但是當我用瀏覽的API,使後,我得到:使用三個嵌套模型創建模型實例? Django Rest 3.1

{ 
    "userprofile": { 
     "user": [ 
      "This field is required." 
     ] 
    } 
} 

如何做到這一點任何想法?

class BuyerProfileViewSet(viewsets.ModelViewSet): 
    queryset = BuyerProfile.objects.all() 
    serializer_class = BuyerProfileSerializer 

串行器:

class UserSerializer(serializers.HyperlinkedModelSerializer): 
     class Meta: 
      model = User 
      fields = ('username',) 

class UserProfileSerializer(serializers.HyperlinkedModelSerializer): 

    user = UserSerializer() 

    class Meta: 
     model = UserProfile 
     fields = ('user', 'bio','prof_type') 

class BuyerProfileSerializer(serializers.HyperlinkedModelSerializer): 
    userprofile = UserProfileSerializer() 

    class Meta: 
     model = BuyerProfile 
     fields = ('userprofile', 'company','sitename') 
+0

1.請出示什麼樣的數據串行接收。 2.請在問題中添加restframework版本。 – zymud

+0

你是什麼意思「什麼數據串行器接收」?你的意思是不同的序列化程序?我也增加了版本 – user1835351

回答

1

添加參數required=False到您的UserProfileSerializer的實例:

userprofile = UserProfileSerializer(required=False) 
+0

如果我這樣做,那麼用戶實例從不創建並保存在數據庫中。我想先創建用戶,然後是用戶配置文件,最後是一個BuyerProifle – user1835351

+0

是的,'required = False'只是使該字段可選。你發送的是哪個JSON發佈對象? –

+0

我使用瀏覽器api使用html格式 – user1835351

相關問題