【问题标题】:Not getting correct output in django filter在 django 过滤器中没有得到正确的输出
【发布时间】:2022-01-20 19:06:38
【问题描述】:

我有以下型号。

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 最新的详细信息。但以下代码为我提供了建议中的所有记录

reco = Recommendation.objects.all().values('ticker__advices__advice_date').filter(ticker__advices__advice_date=datetime.date(2022,1,19))

print(reco)

这是我得到的:

这是我需要的:

【问题讨论】:

  • 你使用 MySQL 数据库吗?
  • @WillemVanOnsem 我使用 postgresql 数据库

标签: django django-models django-views


【解决方案1】:

我只是在过滤器之后写了值,它起作用了。 我不知道为什么,但我通过编写这样的查询得到了想要的结果

reco = Recommendation.objects.all().filter(ticker__advices__advice_date=datetime.date(2022,1,19)).values('ticker__advices__advice_date')

【讨论】:

    猜你喜欢
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2021-05-03
    相关资源
    最近更新 更多