Инициализация поля постоянным значением в 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], чтобы предотвратить отображение поля в ModelForms, 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")
Вернуться на верх