Trong một hình thức Django, làm cách nào để tạo một trường chỉ đọc (hoặc bị vô hiệu hóa)?
Khi biểu mẫu đang được sử dụng để tạo một mục mới, tất cả các trường sẽ được bật - nhưng khi bản ghi ở chế độ cập nhật, một số trường cần phải ở chế độ chỉ đọc.
Ví dụ: khi tạo một Item
mô hình mới , tất cả các trường phải có thể chỉnh sửa được, nhưng trong khi cập nhật bản ghi, có cách nào để vô hiệu hóa sku
trường để nó hiển thị, nhưng không thể chỉnh sửa?
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
Lớp học ItemForm
có thể được tái sử dụng? Những thay đổi nào sẽ được yêu cầu trong lớp ItemForm
hoặc Item
mô hình? Tôi có cần viết một lớp khác không, " ItemUpdateForm
", để cập nhật mục này?
def update_item_view(request):
if request.method == 'POST':
form = ItemUpdateForm(request.POST)
# Validate and save
else:
form = ItemUpdateForm()