Python Django模型,如何添加用户而不是实例?
我试图返回一个JSON格式,但得到一个错误,用户对象不可JSON序列化 我进行了调试并发现了问题,但我一直在修复它 现在如果我打印我的对象,我会得到这样的格式Python Django模型,如何添加用户而不是实例?,python,django,Python,Django,我试图返回一个JSON格式,但得到一个错误,用户对象不可JSON序列化 我进行了调试并发现了问题,但我一直在修复它 现在如果我打印我的对象,我会得到这样的格式 [ { 'id': 1, 'poster': <User: stackoverflow>, 'description': 'test', 'date_added': 'Apr 20 2021, 02:52 AM', 'likes': 1 } ] views.py-创建新
[
{
'id': 1,
'poster': <User: stackoverflow>,
'description': 'test',
'date_added': 'Apr 20 2021, 02:52 AM',
'likes': 1
}
]
views.py-创建新对象的函数
@csrf_exempt
def compose_post(request):
# Composing a new post must be via POST
if request.method != "POST":
return JsonResponse({"error": "POST request required."}, status=400)
# Check post words
data = json.loads(request.body)
words = [word.strip() for word in data.get("description").split(" ")]
if words == [""]:
return JsonResponse({
"error": "At least one word required."
}, status=400)
# Convert post to NewPost object
description = data.get("description", "")
new_post = NewPost(poster=request.user, description=description)
new_post.save()
return JsonResponse({"message": "Post saved successfully."}, status=201)
由于函数返回dict,您可以使用:
NewPost.serialize()['poster']
或者可能:
NewPost.objects.get(id=id)['poster']
我找到了解决方案,似乎我不理解类中的serialize方法。我编辑为“poster”:self.poster.username,所以现在当我循环时,我将用户名作为字符串而不是实例返回
@csrf_exempt
def compose_post(request):
# Composing a new post must be via POST
if request.method != "POST":
return JsonResponse({"error": "POST request required."}, status=400)
# Check post words
data = json.loads(request.body)
words = [word.strip() for word in data.get("description").split(" ")]
if words == [""]:
return JsonResponse({
"error": "At least one word required."
}, status=400)
# Convert post to NewPost object
description = data.get("description", "")
new_post = NewPost(poster=request.user, description=description)
new_post.save()
return JsonResponse({"message": "Post saved successfully."}, status=201)