Обработка форм Django – как создать запись и добавить ее как ForeignKeyPython

Программы на Python
Anonymous
Обработка форм Django – как создать запись и добавить ее как ForeignKey

Сообщение Anonymous »

Я хотел бы решить проблему с обработкой формы моего файлаview.py.
Я хотел бы обработать ModelForm. Вместо того, чтобы позволить пользователю заполнять поле Field fk_transaction, я хотел бы создать новую запись транзакции и добавить ее в качестве ForeignKey в фоновом режиме в CcountBooking. Форма отображается корректно в шаблоне. Также транзакция успешно создана. Однако когда я хочу добавить и сохранить его в форме в view.py, выдается ошибка, сообщающая, что поле не существует.
Спасибо за любую помощь!
Мой view.py:
from django.http import HttpResponse
from django.shortcuts import render
from forms import AccountBookingForm
from models import Transaction

def deposit(request):
    context = {}
    if request.method == "POST":
        form = AccountBookingForm(request.POST)
        t = Transaction()
        form.fk_transaction = t
        form.save()
        return render(request, "deposit_success.html", {"form": form})
    else:
        form = AccountBookingForm()
        return render(request, "deposit.html", {"form": form})

Мои модели.py:
class Transaction(models.Model):
    type = models.CharField(max_length=11, choices=TR_TYPE_CHOICES, default=DEPOSIT)
    status = models.CharField(max_length=11, choices=TR_STATUS_CHOICES, default=DRAFT)
    text = models.TextField(max_length=500, default="", blank=True)

class AccountBooking(models.Model):
    fk_bankaccount = models.ForeignKey(
        BankAccount, on_delete=models.CASCADE, blank=False)
    fk_transaction = models.ForeignKey(Transaction, on_delete=models.CASCADE, blank=False)
    value = models.DecimalField(max_digits=14, decimal_places=2, blank=False)


Мои формы.py
from django.forms import ModelForm
from .models import AccountBooking

class AccountBookingForm(ModelForm):
    class Meta:
        model = AccountBooking
        fields = ["__all__"]
        exclude = ("fk_transaction",)


Подробнее здесь: https://stackoverflow.com/questions/787 ... foreignkey

Вернуться в «Python»