W jaki sposób w formularzu Django mogę ustawić pole tylko do odczytu (lub wyłączone)?
Gdy formularz jest używany do utworzenia nowego wpisu, wszystkie pola powinny być włączone - ale gdy rekord jest w trybie aktualizacji, niektóre pola muszą być tylko do odczytu.
Na przykład podczas tworzenia nowego Item
modelu wszystkie pola muszą być edytowalne, ale czy podczas aktualizacji rekordu istnieje sposób na wyłączenie sku
pola, aby było widoczne, ale nie można go edytować?
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
Czy klasa może ItemForm
być ponownie wykorzystana? Jakie zmiany byłyby wymagane w klasie ItemForm
lub Item
modelu? Czy muszę napisać inną klasę „ ItemUpdateForm
”, aby zaktualizować element?
def update_item_view(request):
if request.method == 'POST':
form = ItemUpdateForm(request.POST)
# Validate and save
else:
form = ItemUpdateForm()