Форма 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 и мне трудно понять общие ответы)

Заранее спасибо!

Вернуться на верх