django 比较日期字段的年份和月份大于

sz81bmfz  于 2023-08-08  发布在  Go
关注(0)|答案(3)|浏览(149)

我将执行此查询:

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?


你的想法是什么?
提前致谢

lrpiutwd

lrpiutwd1#

不能将__lt追加到__year__month。只有最后一个双下划线位被认为是限定符,在它之前的所有内容都被视为遍历,即Django将尝试在名为date的连接表中查找名为year的字段,这显然是不正确的。
对于这样的事情,你只需要直接比较日期:

date = datetime.date(year, month, 1)
news = News.objects.filter(date__lt=date)

字符串

vyu0f0g1

vyu0f0g12#

Django在处理关系时会遇到某些查找问题(例如date__year__*)。我认为这是他们正在为未来版本而努力的事情。
这是否产生可接受的结果?

news = News.objects.filter(date__lt = datetime.date(year, month, 1))

字符串

oug3syen

oug3syen3#

在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__

相关问题