Django管理员搜索DateTime字段(不包含毫秒)

时间:2018-07-11 12:25:59

标签: python django python-3.x postgresql django-admin

我有带postgres的Django实例。默认情况下,使用此配置,Django中的DateTimeFields以毫秒保存。

# models.py
class LogModel(models.Model):
    date_logged = models.DateTimeField(
        "Logged",
        auto_now_add=True
    )
# admin.py
class LogAdmin(admin.ModelAdmin):
    list_display = ('date_logged',)
    search_fields = ('date_logged')

我想通过管理面板在 date_logged 字段中进行搜索,但不包含毫秒,也不想在具有自定义日期时间格式的情况下通过此字段进行搜索。有什么简单的方法吗?

1 个答案:

答案 0 :(得分:0)

使用日期格式删除搜索之前日期的毫秒数

from .models import LogModel
import datetime

myDate = datetime.now()
formatedDate = myDate.strftime("%Y-%m-%d %H:%M:%S")

LogModel.objects.filter(date_logged=myDate)

https://docs.python.org/2/library/datetime.html

如果您无法通过用户输入或从前端获取日期格式,请尝试先创建一个日期对象,然后进行搜索

# datetime(year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]])
import datetime

formatedDate = datetime.datetime(date_from_user.year, date_from_user.month...)
# OR
formatedDate = date_from_user.strftime("%Y-%m-%d %H:%M:%S")

https://docs.python.org/2/library/datetime.html#datetime.datetime

https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior