En un formulario de Django, ¿cómo hago un campo de solo lectura (o deshabilitado)?
Cuando se utiliza el formulario para crear una nueva entrada, todos los campos deben estar habilitados, pero cuando el registro está en modo de actualización, algunos campos deben ser de solo lectura.
Por ejemplo, al crear un nuevo Item
modelo, todos los campos deben ser editables, pero al actualizar el registro, ¿hay alguna forma de deshabilitar el sku
campo para que sea visible, pero no se pueda editar?
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
¿Se ItemForm
puede reutilizar la clase ? ¿Qué cambios serían necesarios en la clase ItemForm
o Item
modelo? ¿Necesitaría escribir otra clase, " ItemUpdateForm
", para actualizar el elemento?
def update_item_view(request):
if request.method == 'POST':
form = ItemUpdateForm(request.POST)
# Validate and save
else:
form = ItemUpdateForm()