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)