我曾經last()在排除一些專案后獲取查詢集的最后一項,如下所示:
holidays = HolidayModel.objects.all().values_list('date', flat=True)
result = BorseExchangeLog.objects.exclude(
hint_time__date__in=holidays
)
# output 1
print(list(result.valuse_list('hint_time__date',flat=True).distinct('hint_time__date')))
#output2
print(result.last().hint_time.date())
但在output2不存在的列印專案中output1
我測驗了其他一些代碼,如下所示:
print(list(logs.values_list('hint_time__date',flat=True).distinct('hint_time__date')))
print(list(logs.values_list('hint_time__date', flat=True).distinct('hint_time__date'))[-1])
print(logs.order_by('hint_time__date').last().hint_time.date())
[..., datetime.date(2020, 10, 21), datetime.date(2020, 10, 26)]
2020-10-26
2020-10-25
我的假期模式:
class HolidayModel(models.Model):
creator = models.ForeignKey('accounts.Account', on_delete=models.PROTECT, verbose_name=_('Creator'))
reason = models.CharField(default='', max_length=200, verbose_name=_('Reason'))
date = models.DateField(default=timezone.now, verbose_name=_('Date'))
和其他模型是:
class BorseExchangeLog(models.Model):
create_time = models.DateTimeField(default=timezone.now)
hint_time = models.DateTimeField(default=timezone.now)
我測驗過first(),問題也存在
什么是問題?我的代碼是錯誤的還是來自 django orm 的錯誤?
使用 django2.2 和 postgresql
uj5u.com熱心網友回復:
您的日期時間可以識別時區,但date()datetime 物件上的方法不考慮時區,只要您的資料庫支持,__date就會考慮時區。使用該函式獲取考慮時區的日期django.utils.timezone.localdate
from django.utils.timezone import localdate
print(localdate(result.last().hint_time))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/389603.html
