มีบล็อกโพสต์ที่น่าอัศจรรย์ซึ่งครอบคลุมที่นี่: การเปรียบเทียบวันที่และชุดข้อมูลใน Django ORM
ทางออกที่ดีที่สุดสำหรับ Django> 1.7, <1.9 คือการลงทะเบียนการแปลง:
from django.db import models
class MySQLDatetimeDate(models.Transform):
"""
This implements a custom SQL lookup when using `__date` with datetimes.
To enable filtering on datetimes that fall on a given date, import
this transform and register it with the DateTimeField.
"""
lookup_name = 'date'
def as_sql(self, compiler, connection):
lhs, params = compiler.compile(self.lhs)
return 'DATE({})'.format(lhs), params
@property
def output_field(self):
return models.DateField()
จากนั้นคุณสามารถใช้มันในตัวกรองของคุณเช่นนี้:
Foo.objects.filter(created_on__date=date)
แก้ไข
วิธีการแก้ปัญหานี้ขึ้นอยู่กับการสิ้นสุดกลับแน่นอน จากบทความ:
แน่นอนว่าการติดตั้งนี้ขึ้นอยู่กับรสชาติของ SQL ที่มีฟังก์ชั่น DATE () MySQL ทำ ดังนั้น SQLite ในทางกลับกันฉันไม่ได้ทำงานกับ PostgreSQL เป็นการส่วนตัว แต่ googling ทำให้ฉันเชื่อว่ามันไม่มีฟังก์ชั่น DATE () ดังนั้นการดำเนินการนี้ง่ายดูเหมือนว่ามันจะจำเป็นต้องขึ้นอยู่กับแบ็กเอนด์ค่อนข้าง