用django ModelForm开始我的初学课程,我想给用户一个在博客中编辑条目的能力.BlogEntry有一个日期,发布时间,标题和内容.我想向用户显示一个显示所有这些字段的编辑表格,但只有标题和内容可编辑. date和postingTime应显示为不可编辑.
class BlogEntry(models.Model):
title = models.CharField(unique=True,max_length=50)
description = models.TextField(blank=True)
date = models.DateField(default=datetime.date.today)
postedTime = models.TimeField(null=True)
...
为了添加条目,我以正常方式使用ModelForm.
class BlogEntryAddForm(ModelForm):
class Meta:
model = BlogEntry
...
但是如何创建编辑表单?我希望它显示日期,将publishTime显示为不可编辑(但仍然在表单上显示)并让用户编辑标题和说明.
如果我使用,在类Meta中排除date和postingTime,这将导致它们不出现在窗体上.那么,我怎样才能将它们显示为不可编辑?
class BlogEntryEditForm(ModelForm):
class Meta:
model = BlogEntry
...?...
解决方法:
在表单对象中,将该字段的属性声明为readonly:
form.fields['field'].widget.attrs['readonly'] = True