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 Itemmodelo, todos los campos deben ser editables, pero al actualizar el registro, ¿hay alguna forma de deshabilitar el skucampo 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 ItemFormpuede reutilizar la clase ? ¿Qué cambios serían necesarios en la clase ItemFormo Itemmodelo? ¿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()