【问题标题】:Save data if not exist in the model using django and update if the data exists如果模型中不存在数据,则使用 django 保存数据,如果数据存在则更新
【发布时间】:2023-04-04 22:58:01
【问题描述】:

我正在使用 django 框架来构建仪表板。

使用的代码:Views.py

def send_data(request):
try:
    conn = connections["default"]
    cursor = conn.cursor()
    user = request.user
    response_dict = {} 
    response_dict = {'status': 0, 'data': []}
    solution_id=request.GET.get('SOLUTION_ID')
    solution_name = request.GET.get('SOLUTION_NAME')
    comments= request.GET.get('COMMENTS')
    try:
        user = SUBMIT()
        user. solution_id = solution_id
        user. solution_name = solution_name
        user.comments = comments
        user.save()
        response_dict["status"] = 1
    except Exception as e:
        response_dict["status"] = 0
        response_dict["exception"] = str(e)
except Exception as e:
    print(str(e))
return HttpResponse(json.dumps(response_dict))

Models.py

from django.db import models
from django.conf import settings
class SUBMIT(models.Model):
         solution_id =models.CharField(max_length = 100)
         solution_name = models.CharField(max_length = 100)
         user.comments = models.CharField(max_length = 1000)

comment 字段是前端的文本区域,一旦用户输入并保存评论,这三个字段都保存在 MySQL 数据库中。如果用户想要第二次更新评论,这是不允许的,因为 solution_id 是表中的主键。如何更新表中的现有行。

提前感谢您的帮助。

【问题讨论】:

    标签: javascript python html mysql django-models


    【解决方案1】:

    如果对象正在创建,那么def send_data() 中还没有solution_id,对吧?

    所以只需检查它,然后进行更新或创建

    try:
        if solution_id: # update
            user = SUBMIT.objects.get(solution_id = solution_id)
            user.solution_name = solution_name
            user.comments = comments
            user.save()
        else: # create
            SUBMIT.objects.create(solution_name = solution_name, comments = comments)
        response_dict["status"] = 1
    except Exception as e:
        response_dict["status"] = 0
        response_dict["exception"] = str(e)
    

    评论更新

    如果solution_id由用户输入

    try:
        user = SUBMIT.objects.get_or_create(solution_id = solution_id)[0]
        user.solution_name = solution_name
        user.comments = comments
        user.save()
        response_dict["status"] = 1
    except Exception as e:
        response_dict["status"] = 0
        response_dict["exception"] = str(e)
    

    【讨论】:

    • 解决方案id由用户通过前端输入
    猜你喜欢
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 2016-11-19
    • 1970-01-01
    • 2017-04-24
    • 2021-11-26
    • 2017-07-14
    相关资源
    最近更新 更多