ในรูปแบบ 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()