Django rest framework 如何通过DRF中的序列化程序更新OneToOneField

Django rest framework 如何通过DRF中的序列化程序更新OneToOneField,django-rest-framework,Django Rest Framework,我有两个模型国家和用户,用户与国家有关系 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 = model

我有两个模型国家和用户,用户与国家有关系

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关系,那么我将保存数据而不会出错


如果在UserSerializer中为country字段指定了另一个名称(country\u detail),则在创建用户时应将该字段传递给UserSerializer,如下所示:

obj = User.objects.get(pk = 996)
#data passed: 
{"name": "abc" , "country_detail":"545"}
UserSerializer(obj, data)