В форме 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()