Django フォームで、フィールドを読み取り専用 (または無効) にするにはどうすればよいですか?
フォームを使用して新しいエントリを作成する場合は、すべてのフィールドを有効にする必要がありますが、レコードが更新モードの場合は、一部のフィールドを読み取り専用にする必要があります。
たとえば、新しいItem
モデルを作成するときは、すべてのフィールドを編集可能にする必要がありますが、レコードを更新している間、sku
フィールドを無効にして、表示されているが編集できないようにする方法はありますか?
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
クラスItemForm
は再利用できますか? ItemForm
またはItem
モデル クラスで必要な変更は何ですか? ItemUpdateForm
アイテムを更新するために別のクラス " " を書く必要がありますか?
def update_item_view(request):
if request.method == 'POST':
form = ItemUpdateForm(request.POST)
# Validate and save
else:
form = ItemUpdateForm()