Сохраните данные, если они не существуют в модели, используя django, и обновите, если данные существуют - PullRequest
0 голосов
/ 07 января 2020

Я использую django Framework для создания панели инструментов.

Используемый код: 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)

Поле комментариев текстовое поле в интерфейсе пользователя после того, как комментарий введен и сохранен пользователем, все три поля сохранены в базе данных MySQL. Если пользователь хочет обновить комментарий во второй раз, это не разрешено, поскольку solution_id является первичным ключом в таблице. Как обновить существующую строку в таблице.

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 07 января 2020

Если объект создается, в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...