In una forma Django, come posso rendere un campo di sola lettura (o disabilitato)?
Quando il modulo viene utilizzato per creare una nuova voce, è necessario abilitare tutti i campi, ma quando il record è in modalità di aggiornamento alcuni campi devono essere di sola lettura.
Ad esempio, quando si crea un nuovo Item
modello, tutti i campi devono essere modificabili, ma durante l'aggiornamento del record esiste un modo per disabilitare il sku
campo in modo che sia visibile, ma non può essere modificato?
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
La lezione può ItemForm
essere riutilizzata? Quali modifiche sarebbero necessarie nella classe del modello ItemForm
o Item
? Dovrei scrivere un'altra classe, " ItemUpdateForm
", per aggiornare l'elemento?
def update_item_view(request):
if request.method == 'POST':
form = ItemUpdateForm(request.POST)
# Validate and save
else:
form = ItemUpdateForm()