Моя модель выглядит следующим образом:
class Change(models.Model):
account = models.ForeignKey(Account, on_delete=models.CASCADE, related_name="changes")
date = models.DateTimeField()
category = models.ForeignKey(Category, related_name="changes", null=True,
on_delete=models.SET_NULL)
description = models.TextField(blank=True)
change = models.DecimalField(decimal_places=2, max_digits=15)
# query optimization
balance = models.DecimalField(max_digits=15, decimal_places=2, null=True, blank=True)
# for checks on save
__account = None
__category = None
__date = None
__change = None
def __init__(self, *args, **kwargs):
super(Change, self).__init__(*args, **kwargs)
self.__date = self.date
self.__category = self.category
self.__account = self.account
self.__change = self.change
В методе init я получаю следующую ошибку при попытке добавить новое изменение через форму:
File "/home/daniel/Data/Tortuga-Webdesign/Kunden_und_Projekte/0000/finance_project/finance/finance/banking/models.py", line 205, in __init__
self.__account = self.account
File "/home/daniel/Data/Tortuga-Webdesign/Kunden_und_Projekte/0000/finance_project/venv/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py", line 197, in __get__
"%s has no %s." % (self.field.model.__name__, self.field.name)
finance.banking.models.Change.account.RelatedObjectDoesNotExist: Change has no account.
Форма выглядит следующим образом:
class ChangeForm(forms.ModelForm):
date = forms.DateTimeField(widget=forms.DateTimeInput(attrs={"type": "datetime-local"},
format="%Y-%m-%dT%H:%M"),
input_formats=["%Y-%m-%dT%H:%M"], label="Date")
class Meta:
model = Change
fields = (
"account",
"date",
"category",
"description",
"change"
)
def __init__(self, depot, *args, **kwargs):
super(ChangeForm, self).__init__(*args, **kwargs)
self.fields["account"].queryset = depot.accounts.all()
self.fields["category"].queryset = depot.categories.all()
self.fields["date"].initial = datetime.now()
Представление создания выглядит следующим образом:
class AddChangeIndexView(LoginRequiredMixin, CustomGetFormMixin, CustomAjaxFormMixin, generic.CreateView):
model = Change
form_class = ChangeForm
template_name = "modules/form_snippet.njk"
Почему я получаю эту ошибку с учетной записью, но не с категорией? Форма не имеет исходного набора данных, за исключением даты.