Отключить поле формы Django на указанное время - PullRequest
1 голос
/ 27 декабря 2011

Я хочу отключить поля django на 6 месяцев после даты обновления. Я сохранил update_time в таблицу.

updated_time = a.update_time
disabled_time = a.update_time + timedelta(180)

Я хочу набрать поле, которое обновлено:

self.fields['first_name'].widget.attrs['readonly'] = True

Как отключить self.fields['first_name'].widget.attrs['readonly'] = True для disabled_time?

Заранее спасибо

1 Ответ

1 голос
/ 27 декабря 2011

Вы можете сравнить и вычесть базовые datetime объекты и сделать некоторую проверку во время инициализации формы:

from datetime import timedelta, datetime
...
class FooForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(FooForm, self).__init__(*args, **kwargs)
        # check if we already have a saved object and it's not older than 180 days
        if self.instance.pk and
                (datetime.now() - self.instance.update_time) < timedelta(180):
            self.fields['first_name'].widget.attrs['readonly'] = True

    class Meta:
        model = Foo

(Не проверено, но должно работать как есть.) Также обратите внимание, что часто удобно сохранять update_time с auto_now , установленным на True .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...