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 ItemModell erstellen , müssen alle Felder bearbeitet werden können. Gibt es jedoch beim Aktualisieren des Datensatzes eine Möglichkeit, das skuFeld 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 ItemFormwiederverwendet werden? Welche Änderungen wären in der ItemFormoder ItemModellklasse 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()