Em um formulário do Django, como faço para um campo somente leitura (ou desativado)?
Quando o formulário está sendo usado para criar uma nova entrada, todos os campos devem ser ativados - mas quando o registro está no modo de atualização, alguns campos precisam ser somente leitura.
Por exemplo, ao criar um novo Item
modelo, todos os campos devem ser editáveis, mas durante a atualização do registro, existe uma maneira de desativar o sku
campo para que fique visível, mas não possa ser editado?
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
A classe pode ItemForm
ser reutilizada? Quais alterações seriam necessárias na classe ItemForm
ou Item
modelo? Preciso escrever outra classe " ItemUpdateForm
", para atualizar o item?
def update_item_view(request):
if request.method == 'POST':
form = ItemUpdateForm(request.POST)
# Validate and save
else:
form = ItemUpdateForm()