0
我有一個django模型,它有一個日期字段和一個單獨的時間字段。我正在嘗試使用過濾器按日期/時間在最新記錄上查找小於當前記錄的日期時間的值。Django:結合日期和時間字段和篩選器
如何使用批註/聚合將日期和時間字段合併爲一個,然後對其進行過濾?
models.py
class Note(models.model):
note_date = models.DateField(null=True)
note_time = models.TimeField(null=True)
note_value = models.PositiveIntegerField(null=True)
def get_last(n):
"""
n: Note
return: Return the note_value of the most recent Note prior to given Note.
"""
latest = Note.objects.filter(
note_date__lte=n.note_date
).order_by(
'-note_date', '-note_time'
).first()
return latest.note_value if latest else return 0
這將返回的任何註釋從上一個日期,但如果我有在同一天兩個音符,一個在下午3點,一個在下午1點,我送了下午3點筆記的功能,我想得到1pm票據的價值。有沒有辦法將兩個字段註釋爲一個比較,還是我必須執行原始SQL查詢?有沒有辦法將日期和時間組件轉換爲一個,類似於您可以如何使用Concat
作爲字符串?
Note.objects.annotate(
my_dt=Concat('note_date', 'note_time')
).filter(
my_dt__lt=Concat(models.F('note_date'), models.F('note_time')
).first()