Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用RESTAPI更新用户配置文件字段_Python_Django_Django Rest Framework_Django Authentication_Django Rest Auth - Fatal编程技术网

Python 如何使用RESTAPI更新用户配置文件字段

Python 如何使用RESTAPI更新用户配置文件字段,python,django,django-rest-framework,django-authentication,django-rest-auth,Python,Django,Django Rest Framework,Django Authentication,Django Rest Auth,我是django的新手,非常困惑。我使用django作为angular应用程序的后端API 我想在用户模型中添加更多的细节,因此我在我的models.py中添加了以下内容 from django.db import models from django.contrib.auth.models import User class UserProfile(models.Model): user = models.OneToOneField(User) company_name =

我是django的新手,非常困惑。我使用django作为angular应用程序的后端API

我想在用户模型中添加更多的细节,因此我在我的
models.py中添加了以下内容

from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    company_name = models.CharField(max_length=100)
class UserProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.UserProfile
        fields = ('company_name',)

class UserDetailsSerializer(serializers.ModelSerializer):
    profile = UserProfileSerializer(required=True)
    class Meta:
        model = models.User
        fields = ('id', 'username', 'first_name', 'last_name', 'profile')
我正在使用应用程序添加rest身份验证支持:

使用此应用程序,我可以使用此URL编辑用户配置文件,并执行POST请求:
http://localhost:8080/rest-auth/user/

问题

如何更新自定义字段
公司名称
?在编辑用户配置文件时

我尝试过的

我试图覆盖的
UserDetailsSerializer
,但没有任何效果。 这就是我试图添加到我的应用程序
serializers.py中的内容

from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    company_name = models.CharField(max_length=100)
class UserProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.UserProfile
        fields = ('company_name',)

class UserDetailsSerializer(serializers.ModelSerializer):
    profile = UserProfileSerializer(required=True)
    class Meta:
        model = models.User
        fields = ('id', 'username', 'first_name', 'last_name', 'profile')

如果您使用的是django rest框架,那么您基本上希望在UserProfile的视图类上有一个更新方法,该方法将用户id作为请求参数。然后,在该方法中,您希望使用ORM为给定的userprofile id获取模型对象,设置作为参数传递的属性,并保存更改的模型对象。然后生成一个成功响应并返回它


您可以在此处阅读有关如何执行此操作的更多信息:

通常,在REST API中,您可以使用更新模型的JSON执行PUT请求。override UserDetails Serializer update方法。@levi我将如何执行此操作?我尝试在应用程序中创建
serializers.py
,但似乎没有效果。这是我的第一个django应用程序,所以我更迷路了。。。