【发布时间】:2018-09-13 02:37:23
【问题描述】:
我正在 DRF 中创建一个调用以 POST 到该站点。我有点困惑为什么我会收到这个错误。我不明白为什么这期望它是一个str。我知道有类似的帖子,但它们仍然无法解决。
错误
AttributeError: 'str' object has no attribute 'id'
[03/Apr/2018 10:55:12] "POST /api/user/UserProfile/1/ HTTP/1.1" 500 83982
serializer.py 看起来像,如果我删除 instance.id 我会得到同样的错误,但只是针对下一行。
from rest_framework import serializers
from api.models import UserProfile
from django.contrib.auth.models import User
class UserProfileSerializer(serializers.Serializer):
# id = serializers.UUIDField()
class Meta:
model = UserProfile
def create(self, validated_data):
return UserProfile.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.id = validated_data.get('profile_id', str(instance.id))
instance.user_id = validated_data.get('user_id', instance.user_id)
instance.save()
return instance
查看
@csrf_exempt
def user_profile_list(request, user_id):
try:
userid = user_id
except userid.DoesNotExist:
return HttpResponse(status=404)
if request.method == 'GET':
uprofile = UserProfile.objects.all().values()
list2 = list(uprofile)
return JsonResponse(list2, safe=False)
elif request.method == 'POST':
data = JSONParser().parse(request)
serializer = UserProfileSerializer(userid, data=data)
if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data, status=201)
return JsonResponse(serializer.errors, status=400)
urls.py
url(r'^api/user/UserProfile/(?P<user_id>[0-9]+)/$', userprofile.user_profile_list),
【问题讨论】:
-
错误信息很清楚,调试你的代码,看看为什么
instance得到str。 -
django noob....不知道该怎么做
-
那么请阅读the debugger docs,这是一个很好的了解工具!
标签: python django python-3.x django-rest-framework