Дополнительный кверисет в DetailView (с использованием self)

Я создаю приложение для управления домашним бюджетом. У меня есть несколько моделей - Дата, Расход, Категория, Доход.

Выглядит это следующим образом

class Date(models.Model):
    name = models.CharField(max_length = 15)    
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='date')

class Category(models.Model):
    name = models.CharField(max_length=100)
    budget = models.DecimalField(max_digits=8, decimal_places=2)
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='category')
    date = models.ForeignKey(Date, on_delete=models.CASCADE, related_name='date', default='Styczeń 2022')

class Expense(models.Model):
    name = models.CharField(max_length=100)
    amount = models.DecimalField(max_digits=8, decimal_places=2)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    account = models.ForeignKey(Account, on_delete=models.CASCADE, related_name="account")
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='expense')
    date = models.ForeignKey(Date, on_delete=models.CASCADE, default='Styczeń 2022')

class Income(models.Model):
    name = models.CharField(max_length=100)
    amount = models.DecimalField(max_digits=8, decimal_places=2)
    account = models.ForeignKey(Account, on_delete=models.CASCADE, related_name="account_income")
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='income')

Сначала пользователь должен выбрать "Date", затем он переходит к DateDetailView. И в этом DetailView я хочу отобразить расходы только за эту дату. Я пробовал использовать objects.filter, но не знаю, как правильно его написать.

Я написал что-то вроде этого

class DateDetailView(DetailView):
    model = Date
    template_name = 'expense/date_detail.html'
    context_object_name = 'date'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['expense'] = Expense.objects.filter(date=F('pk'))
        return context

Я также попробовал следующее

class DateDetailView(DetailView):
    model = Date
    template_name = 'expense/date_detail.html'
    context_object_name = 'date'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['expense'] = Expense.objects.filter(date=self.date)
        return context

У вас есть какие-нибудь идеи? Спасибо!

Отлично, я нашел решение.

class DateDetailView(DetailView):
    model = Date
    template_name = 'expense/date_detail.html'
    context_object_name = 'date'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['expense'] = Expense.objects.filter(date=self.object)
        return context
Вернуться на верх