从POST方法API保存扩展的用户模型数据

时间:2017-06-25 04:06:25

标签: python django django-rest-framework

我没有任何形式只能通过使用POSTMAN从用户那里获得输入我已经测试了这个。 我通过OneToOneField扩展我的默认用户模型

class Profile(models.Model):
    user = models.OneToOneField(User, related_name='profile')
    phone = models.CharField(max_length=15)
    address = models.CharField(max_length=250)

我实现了以下方法

def create_profile(sender, instance, **kwargs):
    if kwargs["created"]:
        user_profile = Profile(user=instance)
        instance.profile.save()
post_save.connect(create_profile, sender=User)

因此,当任何记录插入用户模型时,它会为配置文件创建记录。

例如,如果我使用POST方法数据进行任何API调用,如localhost:8000 / signup 用户名:abc,密码:passkey123,电话:9876543210它在用户模型中保存用户名和密码用用户参考创建的相应个人资料模型无法更新我的电话号码字段。

我没有任何形式来获取数据。以下是我从/ signup

路由的视图
@api_view(['post'])
@authentication_classes([])
@permission_classes([])
def signup(request):
    username = request.data.get('username')
    password = request.data.get('password')
    email = request.data.get('email')
    phone = request.data.get('phone')

    user = User.objects.create_user(username=username, password=password,
                                email=email)
    if not user:
        return Response({'message': 'Failed'}, status=HTTP_400_BAD_REQUEST)
    return Response({'message': 'success'})

我是否需要实现任何特殊信号以将输入数据(如电话和地址)传递给配置文件模型或我必须添加的额外行。

提前致谢。

0 个答案:

没有答案