2015-04-15 2 views
2

У меня есть модель Джангоdjango1.6 ModelForm сделать поля только для чтения

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') 

Я хотел бы обновить поле описания в ModelForm с использованием UpdateView. Я хотел бы видеть другие поля (автор, название и т.д.), но хотите редактировать и 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, но я не уверен, где разместить это и как t o осуществление

+1

Может быть, это [сообщение] (http://stackoverflow.com/questions/324477/in-a-django-form-how-to-make-a-field-readonly-or-disabled-so- что-это-не может-б) может вам помочь. Особенно ответ «christophe31». –

ответ

0

Field.disabled Новое в Django 1.9. Запрещенный логический аргумент, когда установлен в значение Истина, отключает поле формы, используя атрибут отключенного HTML, чтобы он не редактировался пользователями. Даже если пользователь сбрасывает значение поля, отправленное на сервер, оно будет проигнорировано в пользу значения из исходных данных формы.

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