2011-12-26 60 views
1

我想在更新日期後的6個月內禁用django字段。我已將update_time保存到表中。在給定時間內禁用django表單字段

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'] = Truedisabled_time

在此先感謝

+0

你可以發佈你的看法和模板? – ubershmekel 2011-12-26 22:21:10

回答

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_timeauto_now設置爲確實通常很方便。