2017-05-29 17 views
0

でシリアライザを通じてOneToOneField更新することができ、私は2モデル国とユーザーを持って、ユーザーが国どのように我々はDRF

class Country(models.Model): 
    country_id = models.AutoField(primary_key = True) 
    country_name = models.CharField(max_length = 128) 

    class Meta: 
     db_table = 'country' 

class User(models.Model): 
    user_id = models.AutoField(primary_key = True) 
    country = models.OneToOneField(Country, related_name='country_model') 
    name = models.CharField(max_length = 12) 

    class Meta: 
     db_table = 'User' 

との関係を持っている私は、ビューの私に今すぐユーザー

class UserSerializer(serializers.ModelSerializer): 
    country_detail = CountrySerializer(source = 'country',required=False) 
    class Meta: 
     model = User 
     fields = ['country','name','country_detail'] 

のためのシリアライザを書き留めていますこれを書き留めておいてください

obj = User.objects.get(pk = 996) 
#data pass this 
{"name": "abc" , "country":"545"} 
UserSerializer(obj, data) # it show me error type object 'User' has no attribute country 'DoesNotExit' 

ここでOneToOneField関係を削除すると、間違ったROR

何この

答えて

0

であなたがUserSerializerで国フィールドに別の名前(country_detail)を指定すると、これはあなたがそうのように、ユーザーの作成中にUserSerializerに渡すフィールドです:

obj = User.objects.get(pk = 996) 
#data passed: 
{"name": "abc" , "country_detail":"545"} 
UserSerializer(obj, data) 
関連する問題