Сохранение экземпляра модели с DateTimeField в Django Admin теряет разрешение микросекунды
в Django 1.8, скажем, у нас есть эта очень простая модель:
class Log(models.Model):
remarks = models.TextField()
timestamp = models.DateTimeField(default=timezone.now)
когда я сохраняю экземпляр модели в моей базе данных PostgreSQL,timestamp
поле будет микросекунд. Я заметил, что если я попытаюсь отредактировать конкретный экземпляр модели из администратора Django,timestamp
поле потеряет разрешение МКС при сохранении обратно в базу данных.
большинству приложений не понадобится такой уровень точности, но для приложений, которые требуют такого, это будет приятно иметь возможность устранить все возможные причины этой потери разрешения. Есть ли какой-либо известный способ/функция для предотвращения этого или это ошибка/ограничение?
1 ответов
проблема в том, что виджет администратора по умолчанию не поддерживает микросекунды. Вы можете переопределить виджет с помощью formfield_overrides
использовать DateTimeInput
вместо этого и укажите формат, который включает микросекунды.
from django.contrib import admin
from django.db import models
from django import forms
from .models import Log
class LogAdmin(admin.ModelAdmin):
formfield_overrides = {
models.DateTimeField: {'widget': forms.DateTimeInput(format='%Y-%m-%d %H:%M:%S.%f')},
}
admin.site.register(Log, LogAdmin)
в вашем случае, так как это временная метка, другой вариант-добавить поле readonly_fields
, так что его вообще нельзя изменить.