Django Фильтр зарплаты конкретного пользователя в заданном диапазоне дат

У меня есть две модели :

class MonthSalary(models.Model):
    month = models.DateField(null=True)

    def __str__(self):
        return str(self.month.year) + '/' + str(self.month.month)

class SalaryPerMonth(models.Model):
    user = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
    salary_month = models.ForeignKey(MonthSalary, null=True, on_delete=models.CASCADE)
    main_salary_per_month = models.PositiveIntegerField(default=0, null=True)
    net_salary_per_month = models.PositiveIntegerField(default=0, null=True)

    class Meta:
        constraints = [
            models.UniqueConstraint(fields=["user", "salary_month"], name="all_keys_unique_together")]

    def __str__(self):
        return str(self.user.employeedetail.empcode) + ' ' + str(self.net_salary_per_month) + ' LYD ' + str(
            self.salary_month)

В Views я могу запросить все зарплаты пользователей с помощью :

user = request.user
salary_per_month = SalaryPerMonth.objects.filter(user=user)

В модели MonthSalary я добавил кучу месяцев\years не по порядку Ex "2022-2,2022-4,2022-1,2021-4", когда я фильтрую зарплату пользователя, упорядочивая дату "связанного поля salary_month" следующим образом :

salary_per_month = SalaryPerMonth.objects.filter(user=user).order_by('salary_month')

Это не по порядку.

Q1 = Как отфильтровать по году? Q2 = Как упорядочить по месяцам ?

Вот ответ на первую часть моего вопроса "Q2", упорядоченный по месяцам

Все, что я сделал, это добавил класс Meta:

class Meta:
class MonthSalary(models.Model):
    month = models.DateField(null=True)

    class Meta:
        ordering = ['-month']


class SalaryPerMonth(models.Model):
    user = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
    salary_month = models.ForeignKey(MonthSalary, null=True, on_delete=models.CASCADE)
    main_salary_per_month = models.PositiveIntegerField(default=0, null=True)
    net_salary_per_month = models.PositiveIntegerField(default=0, null=True)

    class Meta:
        ordering = ['-salary_month']
Вернуться на верх