В форме Django, как сделать поле только для чтения (или отключено)?
Когда форма используется для создания новой записи, все поля должны быть включены - но когда запись находится в режиме обновления, некоторые поля должны быть доступны только для чтения.
Например, при создании новой модели Item
все поля должны быть доступны для редактирования, но при обновлении записи есть способ отключить поле sku
, чтобы он был видимым, но не может быть отредактирован?
class Item(models.Model):
sku = models.CharField(max_length=50)
description = models.CharField(max_length=200)
added_by = models.ForeignKey(User)
class ItemForm(ModelForm):
class Meta:
model = Item
exclude = ('added_by')
def new_item_view(request):
if request.method == 'POST':
form = ItemForm(request.POST)
# Validate and save
else:
form = ItemForm()
# Render the view
Можно ли повторно использовать класс ItemForm
? Какие изменения потребуются в классе модели ItemForm
или Item
? Нужно ли мне писать другой класс "ItemUpdateForm
" для обновления элемента?
def update_item_view(request):
if request.method == 'POST':
form = ItemUpdateForm(request.POST)
# Validate and save
else:
form = ItemUpdateForm()