我通过一对一的关系建立了与用户模型相关的模型 UserProfile 。
UserProfileSerializer 已正确定义,并且可以很好地序列化 userprofile 对象。
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User, primary_key=True)
country = models.CharField(max_length=255)
class UserProfileSerializer(serializers.ModelSerializer):
class Meta:
model = UserProfile
fields = ('user','country')
但是在传递数据时会给出错误 {'用户':['此字段是必需的']}。
>>> s = UserProfileSerializer(data = {'user':1,'country':'YY'} )
>>> s.is_valid()
False
>>> s.errrors
{'user':['This field is required']}
答案 0 :(得分:1)
这可能为时已晚,无法提供帮助,而且我不确定您要尝试做什么,但请尝试在序列化程序中设置user
字段以使用PrimaryKeyRelatedField
以便您可以代表具有ID的用户,或者如果您只想更新user
内容,则将readonly
字段设置为UserProfile
。如果您不想使用主键,则其他关系字段为here。
如果您将user
字段更改为PrimaryKeyRelatedField,并且您希望用户数据按原样返回,则可能需要生成两个UserProfile
序列化程序 - 一个用于写入操作,另一个用于写入操作阅读在create
或update
之后,您可以切换到读取序列化程序以填充响应。