我创建了一个api来创建用户。但现在我需要根据他们的id
更新他们的信息。(我想为这个任务创建一个新的api。)
所以我写了以下内容:
views.py
class ProfileView(APIView):
permission_classes = (AllowAny,)
serializer_class = ProfileSerializer
def update(self, request, *args, **kwargs):
instance = self.get_object()
instance.branch = request.data.get("branch")
instance.year = request.data.get("year")
instance.save()
serializer = self.get_serializer(instance)
serializer.is_valid(raise_exception=True)
self.perform_update(serializer)
return Response(serializer.data)
serializers.py
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Account
在我的模型中,我的字段为username
,email
,branch
,year
,full name
。如果在注册时用户填写少量字段,并且在一段时间后他将填写其他字段(分支,年份)。我如何使它成为可能
答案 0 :(得分:0)
serializers.py
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Account
def update(self, instance, validated_data):
instance.branch = validated_data.get('branch', instance.branch)
instance.year = validated_data.get('year', instance.year)
instance.save()
return instance
views.py
class ProfileView(APIView):
api_view = ['PUT']
def put(self, request, format=None):
data = request.DATA
user_details = Account.objects.get(id=request.query_params.get("id"))
serializer = ProfileSerializer(user_details, data=data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
urls.py
from django.conf.urls import patterns
from django.conf.urls import url
from . import views
urlpatterns = patterns('',
url(r'^user_details/', views.ProfileView),
)
使用以下路径访问您的PUT:/ api / userdetails /?id = 1
现在,根据用户ID更新用户信息(分支,年份)。