django1.6 ModelForm只读字段

时间:2015-04-15 15:19:09

标签: python django

我有一个django模型

models.py

class Item(models.Model):
        author = models.ForeignKey(User)
        name = models.CharField('Brief summary of job', max_length=200)
        created = models.DateTimeField('Created', auto_now=True,auto_now_add=True)
        description = models.TextField('Description of job')

我想使用UpdateView更新模型中的description字段。我想看到其他字段(作者,姓名等),但希望编辑和POST禁用

forms.py

from django.forms import ModelForm
from todo.models import Item

class EditForm(ModelForm):
    class Meta:
        model = Item
        fields = ['author', 'job_for', 'name', 'description']

urls.py

urlpatterns = patterns('',
              # eg /todo/
              url(r'^$', views.IndexView.as_view(), name='index'),
              #eg /todo/5
              url(r'^(?P<pk>\d+)/$', views.UpdateItem.as_view(), name='update_item'),                
 )

views.py

class UpdateItem(UpdateView):
    model = Item
    form_class = EditForm
    template_name = 'todo/detail.html'
    # Revert to a named url
    success_url = reverse_lazy('index')

我已经看过建议form.fields['field'].widget.attrs['readonly'] = True的解决方案,但我不确定在何处放置或如何实施

1 个答案:

答案 0 :(得分:0)

Field.disabled Django 1.9中的新功能。 禁用的boolean参数设置为True时,将使用禁用的HTML属性禁用表单字段,以便用户无法编辑它。即使用户篡改了提交给服务器的字段值,也会忽略该格式以支持表单初始数据中的值。

def MyForm(forms.ModelForm):
 class Meta:
  model = MyModel
 def __init__(self):
  self.fields['field'].disabled = True