Не удается получить правильный вывод в фильтре django
У меня есть следующие модели.
class Stocks(models.Model):
ticker = models.CharField(max_length=30, primary_key=True, unique=True)
company_name = models.CharField(max_length=100, blank=True, null=True)
...
class Advice(models.Model):
ticker = models.ForeignKey(Stocks, db_column='ticker', related_name='advices',
on_delete=models.CASCADE)
advice_date = models.DateField(blank=True, null=True)
...
class Recommendation(models.Model):
ticker = models.ForeignKey(Stocks, db_column='ticker', related_name='recommendation',
on_delete=models.CASCADE)
target = models.FloatField(blank=True, null=True)
Я хочу получить данные, где Advice.advice_date является последней. но следующий код дает мне все записи из advice
reco = Recommendation.objects.all().values('ticker__advices__advice_date').filter(ticker__advices__advice_date=datetime.date(2022,1,19))
print(reco)
вот что я получаю: <QuerySet [{'ticker__advices__advice_date': datetime.date(2022, 1, 10)}, {'ticker__advices__advice_date': datetime.date(2022, 1, 11)}, {'ticker__advices__advice_date': datetime. date(2022, 1, 12)}, {'ticker__advices__advice_date': datetime.date(2022, 1, 13)}, {'ticker__advices__advice_date': datetime.date(2022, 1, 14)}, {'ticker__advices__advice_date': datetime. date(2022, 1, 17)}, {'ticker__advices__advice_date': datetime.date(2022, 1, 18)}, {'ticker__advices__advice_date': datetime. date(2022, 1, 19)}, {'ticker__advices__advice_date': datetime.date(2022, 1, 10)}, {'ticker__advices__advice_date': datetime.date(2022, 1, 11)}, {'ticker__advices__advice_date': datetime. date(2022, 1, 12)}, {'ticker__advices__advice_date': datetime.date(2022, 1, 13)}, {'ticker__advices__advice_date': datetime. date(2022, 1, 14)}, {'ticker__advices__advice_date': datetime.date(2022, 1, 17)}, {'ticker__advices__advice_date': datetime.date(2022, 1, 18)}, {'ticker__advices__advice_date': datetime. date(2022, 1, 19)}, {'ticker__advices__advice_date': datetime.date(2022, 1, 10)}, {'ticker__advices__advice_date': datetime.date(2022, 1, 11)}, {'ticker__advices__advice_date': datetime. date(2022, 1, 12)}, {'ticker__advices__advice_date': datetime.date(2022, 1, 13)}, '...(остальные элементы усечены)...']>
вот что мне нужно: <QuerySet [{'ticker__advices__advice_date': datetime.date(2022, 1, 19)}]
Я просто написал значения после фильтра и это сработало. Я не уверен почему, но я получаю желаемый результат, написав запрос следующим образом:
reco = Recommendation.objects.all().filter(ticker__advices__advice_date=datetime.date(2022,1,19)).values('ticker__advices__advice_date')