Wie mache ich in einem Django-Formular ein Feld schreibgeschützt (oder deaktiviert)?
Wenn das Formular zum Erstellen eines neuen Eintrags verwendet wird, sollten alle Felder aktiviert sein. Wenn sich der Datensatz jedoch im Aktualisierungsmodus befindet, müssen einige Felder schreibgeschützt sein.
Wenn Sie beispielsweise ein neues Item
Modell erstellen , müssen alle Felder bearbeitet werden können. Gibt es jedoch beim Aktualisieren des Datensatzes eine Möglichkeit, das sku
Feld so zu deaktivieren , dass es sichtbar ist, aber nicht bearbeitet werden kann?
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
Kann der Unterricht ItemForm
wiederverwendet werden? Welche Änderungen wären in der ItemForm
oder Item
Modellklasse erforderlich ? Muss ich eine weitere Klasse " ItemUpdateForm
" schreiben , um das Element zu aktualisieren?
def update_item_view(request):
if request.method == 'POST':
form = ItemUpdateForm(request.POST)
# Validate and save
else:
form = ItemUpdateForm()