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()