Форма UpdateView и DeleteView и 3 иерархические модели
Я пытаюсь создать 'Expense Tracker'. У меня есть запрос относительно UpdateView и DeleteView и моделей с 3 иерархическими уровнями. Я смог создать CreateView для модели 'Expense', но представление обновления и удаления выдает много ошибок. Подскажите, пожалуйста, как написать код для update и deleteview (для модели 'Expense').
Models.py
class Year(models.Model):
year = models.IntegerField(choices=year_choices()
,validators=[MinValueValidator(1984),
max_value_current_year], name='year',
unique = True)
def __str__(self):
return str(self.year)
class Meta():
ordering = ('-year','-year')
class Month(models.Model):
month = models.CharField(choices=month_choices(), max_length=264)
month_year = models.ForeignKey(Year,related_name = 'month',on_delete=models.CASCADE)
def __str__(self):
return str(self.month) + ' ' + str(self.month_year)
def get_absolute_url(self):
return reverse("Expense_App:Year")
class Meta():
unique_together = [['month','month_year']]
class Expense(models.Model):
Home_Expense = models.PositiveIntegerField()
Groceries = models.PositiveIntegerField()
Electronics = models.PositiveIntegerField()
Snacks = models.PositiveIntegerField()
Other = models.PositiveIntegerField()
total = models.PositiveIntegerField()
expense_month = models.ForeignKey(Month,related_name = 'expense', on_delete=models.CASCADE)
def __str__(self):
return str(self.expense_month) + ' ' + str(self.total)
def get_absolute_url(self):
return reverse("Expense_App:Year")
Forms.py
#forms.py
class ExpensesForm(forms.ModelForm):
class Meta():
model = Expenses
fields = ('expenses','expense_month')
def __init__(self, *args, **kwargs):
month_year_id = kwargs.pop('month_year_id')
super(ExpensesForm, self).__init__(*args, **kwargs)
self.fields['expense_month'].queryset = ExpenseMonth.objects.filter(month_year_id=month_year_id)
Views.py
#createview for 'expense' model
class ExpenseCreateView(CreateView):
model = models.Expense
form_class = ExpenseForm
def get_form_kwargs(self):
kwargs = super(ExpenseCreateView, self).get_form_kwargs()
kwargs.update({'month_year_id': self.kwargs.get('pk')})
return kwargs
Urls.py
Обновление и удаление вида будут в этих урлах (когда они будут созданы)
#Update and delete views' url
path('year/<int:pk>/<int:pk2>/update_expense/',views.ExpenseUpdateView.as_view(),name = 'update_expense'),
path('year/<int:pk>/<int:pk2>/delete_expense/',views.ExpenseDeleteView.as_view(),name = 'delete_expense'),
Я проверил документацию Django, но не смог найти конкретного ответа на этот вопрос. Пожалуйста, помогите мне. Я искал много вопросов, связанных с этим, в stackoverflow и на других сайтах, но не смог найти ответ. Не могли бы вы ответить на этот вопрос в данном контексте (пожалуйста, не отвечайте с общим кодом, так как я новичок в django и мне трудно понять общие ответы)
Заранее спасибо!