比较日期字段的年和月是否大于某值
我打算执行这个查询:
today = datetime.date.today()
year=today.year
month=today.month
news=News.objects.filter(date__year__lt = year,date__month__lt=month)
注意:News对象里有一个叫做 date
的字段,但我遇到了这个错误:
Join on field 'date' not permitted. Did you misspell 'year' for the lookup type?
你有什么想法吗?
提前谢谢你!
3 个回答
0
在Django中,有一种方法可以根据日期和月份来筛选数据。
Sales.objects.filter(Date__month=month,Date__year=year)
销售模型:
class Sales(models.Model):
Amount = models.FloatField(blank=True, null=True)
Date = models.DateField()
updated_at = models.DateTimeField(auto_now=True)
VAT = models.BooleanField(default=True)
class Meta:
ordering = ['id']
def __str__(self):
return "{}-{}".format(self.Amount,self.Date)
def class_name(self):
return self.__class__.__name__
2
Django在通过关系进行某些查询时会遇到问题,比如使用date__year__*
这样的方式。我觉得他们正在为未来的版本解决这个问题。
这样做会得到一个可以接受的结果吗?
news = News.objects.filter(date__lt = datetime.date(year, month, 1))
12
你不能把 __lt
加到 __year
或 __month
后面。只有最后一个带双下划线的部分被认为是限定符,前面的部分都被当作是遍历,也就是说,Django 会尝试在名为 date
的连接表中查找一个叫 year
的字段,这显然是不对的。
对于这种情况,你需要直接比较日期:
date = datetime.date(year, month, 1)
news = News.objects.filter(date__lt=date)