Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.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 Django模型,如何添加用户而不是实例?_Python_Django - Fatal编程技术网

Python Django模型,如何添加用户而不是实例?

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-创建新

我试图返回一个JSON格式,但得到一个错误,用户对象不可JSON序列化

我进行了调试并发现了问题,但我一直在修复它

现在如果我打印我的对象,我会得到这样的格式

[
    {
    '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)