这是 django 和 django Rest 框架。我有 2 个模型:用户和电话。
第一个问题:
我希望能够与电话一起更新用户数据(电子邮件)
1 个 API 更新响应中的数据(电话号码)。电话号码可以
为 0 个或多个。嗯,实际上就像partial=True 一样。如果用户只是想
更新电话号码,不要更新电子邮件,反之亦然。
附加信息: 注册时,不包括电话。只是基本的用户信息(姓氏、名字、电子邮件、密码)。注册完成后,手机只能在用户个人资料表中更新。用户个人资料表单实际上链接到多个模型,即用户和电话
第二个问题:
如何序列化多个phone_numbers并保存到数据库?
class User(AbstractBaseUser):
email = models.EmailField(unique=True, default='')
USERNAME_FIELD = 'email'
class Phone(models.Model):
phone_number = models.CharField(max_length=10)
owner = models.ForeignKey(User)
--------------------------------------
class UserSerializer(serializers.ModelSerializer):
phone_number = PhoneSerializer(required=False, many=True)
class Meta:
model = User
fields = ('email, 'phone_number')
class PhoneSerializer(serializers.ModelSerializer):
class Meta:
Model = Phone
fields = ('phone_number')
html 表单的电话号码字段中会有加号,表示可以添加新的电话号码。例子是here http://formvalidation.io/examples/adding-dynamic-field/
email : [email protected] /cdn-cgi/l/email-protection
phone number: 23423432423
(add more)
phone number: 3423423423
(add more)
...
预期的 json
{
'email': '[email protected] /cdn-cgi/l/email-protection',
'phone_number': '32432433223234'
}
或者如果添加了许多电话号码
{
'email': '[email protected] /cdn-cgi/l/email-protection',
'phone_number': '32432433223234',
'phone_number': '324342322342323'
}
或者可能
{
'email': '[email protected] /cdn-cgi/l/email-protection',
'phone_number': ['32432433223234','324342322342323']
}
or maybe
{
'email': '[email protected] /cdn-cgi/l/email-protection',
'Phone': [{'id': 1, 'phone_number': '32432433223234'}, {'id': 2, 'phone_number': '324342322342323'}]
}
这个json可以吗?
序列化器和模型视图集如何做到这一点?
抱歉,我对 drf 完全陌生