Обновление поля в таблице PostgreSQL с помощью .update() не работает в django
Я пытался обновить значение invo_payment_method
из таблицы под названием Invoices
. Вот код, который я пытаюсь выполнить в настоящее время:
if total_payments_for_invoice.all().count() == 1:
invoice_object = Invoice.objects.get(slug=slug)
invoice_object.invo_payment_method = request.POST.get('payment_method')
invoice_object.save()
Итак, я пытаюсь сделать следующее: если это первый платеж по счету-фактуре, я хочу получить invoice_object
, который содержит slug счета-фактуры, только что получившего платеж, и обновить поле invo_payment_method
в таблице и сохранить изменения. Но это не работает. Я также попробовал сделать следующее:
if total_payments_for_invoice.all().count() == 1:
Invoice.objects.filter(slug=slug).update(
invo_payment_method=request.POST.get('payment_method'))
И это тоже не работает. После этого я попробовал добавить к приведенному выше коду следующее:
if total_payments_for_invoice.all().count() == 1:
Invoice.objects.filter(slug=slug).update(
invo_payment_method=request.POST.get('payment_method')).save()
А этот действительно обновил значение в базе данных, но при этом произошел сбой веб-страницы из-за следующего исключения: AttributeError: 'int' object has no attribute 'save'
. В случае, если необходимо больше информации, если я выведу значение Invoice.objects.get(slug=slug)
, то получу следующее: INV-bb1c 21. А если я выведу значение Invoice.objects.filter(slug=slug)
, то получу следующее: <QuerySet [<Invoice: INV-bb1c 21>]>
. В обоих случаях я получаю номер счета, который равен INV-bb1c и pid счета, который равен 21. Как выглядит таблица Invoice
смотрите на прикрепленном изображении. Любая помощь будет очень признательна. Для уточнения: invo_payment_method
изначально null
в базе данных и request.POST.get('payment_method')
возвращает строку используемого способа оплаты.