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']