Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.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 更新或创建不更新,只创建_Python_Django_Django Views_Backend - Fatal编程技术网

Python 更新或创建不更新,只创建

Python 更新或创建不更新,只创建,python,django,django-views,backend,Python,Django,Django Views,Backend,我试图做的是基于检查数据库中是否已经存在模型答案来更新或创建,但是每次我尝试更新现有模型答案时,它会将其创建为一个新的模型答案,我不理解为什么它不过滤掉它是否存在,我不知道是我的过滤器还是我的默认值出错了我不知道你为什么会遇到这个问题,但你的代码有问题..你正在过滤模型,按问题id回答,但你正在给它一个查询集。 此代码(Questions.objects.get(pk=question_no))返回queryset对象,如果DoesNotExist并且您正在将其传递给question_id,则返

我试图做的是基于检查数据库中是否已经存在模型答案来更新或创建,但是每次我尝试更新现有模型答案时,它会将其创建为一个新的模型答案,我不理解为什么它不过滤掉它是否存在,我不知道是我的过滤器还是我的默认值出错了

我不知道你为什么会遇到这个问题,但你的代码有问题..你正在过滤模型,按问题id回答,但你正在给它一个查询集。 此代码(Questions.objects.get(pk=question_no))返回queryset对象,如果DoesNotExist并且您正在将其传递给question_id,则返回None。。 您可以将问题id更改为问题,也可以先获取问题并检查是否存在,如果存在,您可以将其id传递给问题id。。
但我认为第一种解决方案更好。

获取
-返回对象不是查询集好的,但不能将对象用作问题id。看起来您的问题是:您在
kwargs
默认值中放入了相同的值。这不是您编写默认值以确定对象是否存在于数据库中的方式吗?你认为我应该编辑这个问题来展示模型吗?
@require_http_methods(["POST"])
@login_required
def edit_question(request):
    req = json.loads(request.body)
    question_no = req["question_no"]
    guided_answers=req["guided_answer"]

    for guided_answer in guided_answers:
        obj, created= models.ModelAnswer.objects.update_or_create(
            question_id=models.Questions.objects.get(pk=question_no),
            model_ans= guided_answer["model_ans"],
            answer_mark=guided_answer["answer_mark"],
            defaults={
                'answer_mark':guided_answer["answer_mark"],
                'model_ans':guided_answer["model_ans"],
            }
        )
    return success({"res": True})