我搜索了整个网络,但找不到满意的答案 我通过添加一些自定义字段更改了我的用户模型
所以现在我得到了 '用户名', '密码', '电子邮件', '名', '姓', '电话号码', '地址'
而不是
'用户名', '密码', '电子邮件', '名', 'last_name',---(这些是默认值)---
这是我的 models.py
from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import User
class userinformation(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
phonenumber = models.CharField(max_length=100)
address = models.CharField(max_length=200)
class Meta:
verbose_name_plural = "User Information"
def __str__(self):
return str(self.user)+' - '+self.phonenumber+' - '+self.address
我正在尝试制作一个 Django REST 框架 api,我可以在上面发布
'username',
'password',
'email',
'first_name',
'last_name',
'phonenumber',
'address'
并使用这些详细信息注册用户 我应该在 veiws.py 和 serializers.py 中添加什么
最佳答案
添加这些其他字段来自操作序列化器。如果您将字段 lated_name='user_information'
添加到模型定义中,则可以执行类似的操作来公开这些字段:
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='user_information')
然后创建一个序列化器,例如:
class UserSerializer(serializers.HyperlinkedModelSerializer):
phonenumber = serializers.CharField(source='user_information.phonenumber')
address = serializers.CharField(source='user_information.address')
class Meta:
model = User
fields = ('username', 'password', 'email', 'first_name', 'last_name',
'phonenumber', 'address')
并在您的 View 中实例化该序列化器:
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
[...]
关于python - 如何在 Django REST 框架 api 中进行用户注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40724694/