就像在标题中一样,我希望得到两个日期字段(startdate
和enddate
)之间的所有模型实例。你知道吗
这是我的模型的实现:
class HonorKegiatan(models.Model):
id = models.AutoField(primary_key=True)
jenisKegiatan = models.CharField(max_length=100, null=True, choices=masterkegiatan)
honor = models.IntegerField(null=True, blank=True)
keterangan = models.CharField(max_length=100, null=True, blank=True)
startdate= models.DateField(null=True)
enddate= models.DateField(null=True)
我想展示我的模型的实例datetime.datetime.now现在()介于startdate和enddate字段之间。你知道吗
我该怎么写我的查询集?你知道吗
这是我迄今为止尝试过的,但没有任何结果:
honor = HonorKegiatan.objects.filter(
startdate__gte=datetime.datetime.now(),
enddate__lte=datetime.datetime.now()
).values_list('honor',flat=True)
我做错了什么?你知道吗
问题出在你所做的查询集中! 怎么会有比现在更大的东西存在呢日期时间.now那么结束日期呢日期时间。现在? 尝试反转gte和lte!你知道吗
首先,请仔细检查数据库中是否有条目,并且使用的数据库是否正确(不要使用没有条目的dev/staging/production环境)。你知道吗
你的过滤代码有问题,应该是这样的:
开始日期必须小于现在,结束日期必须大于现在。只有到那时“现在”才会在两者之间。你知道吗
您将
lte
与enddate一起使用,gte
与startdate一起使用,这就是问题所在。如果你想介于两者之间,最好不要使用两端相等。我更新了代码以使用gt
和lt
。你知道吗对于django,最好从
django.utils
导入timezone
,然后使用timezone.now()
而不是内置的datetime模块。你知道吗问题似乎是代码
startdate__gte=datetime.datetime.now(),enddate__lte=datetime.datetime.now()
在这里,您试图与模态中可能不存在的值进行比较,因为它是当前时间值。另外,代码编写得不好,应该先设置比较变量的值,然后在过滤器中使用。你知道吗
可能的修正可以是
相关问题 更多 >
编程相关推荐