我有一个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
的解决方案,但我不确定在何处放置或如何实施
答案 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