Инициализация поля постоянным значением в django Form
Как настроить комбинацию модель/форма таким образом, чтобы поле в модели инициализировалось фиксированным значением, а при представлении формы пользователю не отображался элемент формы?
Я просто хочу инициализировать Source.updated = datetime.datetime(2000, 1, 1, 0, 0, 0, 0)
каждый раз, когда из формы создается новая Source
. Пользователь не может изменить это начальное значение по умолчанию. (Последующее взаимодействие с приложением приведет к изменению значения этого поля, но это не просто auto_now
, потому что я хочу, чтобы начальное значение было далеко в прошлом.)
Что у меня сейчас есть
class Source(Model):
name = models.CharField(max_length=168, help_text="Source name")
link = models.URLField(primary_key=True, help_text="Data source link")
type = models.CharField(max_length=64, help_text="Data source type")
# TODO: add this field to the model.
# have it initialize to 2000-01-01
#updated = models.DateTimeField(help_text="Most recent time this source has been updated")
class SourcesForm(forms.ModelForm):
class Meta:
model = models.Source
fields = ['name', 'link', 'type',]
# TBD: how to configure the form so that
# it initializes the "updated" field with a fixed value
# when .save() is called
Логика, которую я пытаюсь реализовать, такова: мы получаем данные из удаленного источника, поэтому я хочу знать, когда последний раз эти данные были обновлены.
Вы можете установить editable=False
[Django-doc], чтобы предотвратить отображение поля в ModelForm
s, ModelAdmin
и т.д.:
from datetime import datetime
class Source(Model):
# …
updated = models.DateTimeField(editable=False, default=datetime(2000, 1, 1), help_text="Most recent time this source has been updated")