禁用django表单字段给定时间

时间:2011-12-26 21:00:45

标签: python django

我想在更新日期后的6个月内禁用django字段。我已将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 个答案:

答案 0 :(得分:1)

您可以比较减去基本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设置为 True 时{{1}}通常很方便。