[英]Django Form, make readonly field
我正在嘗試使用 Django 創建一個表單,並且我的目標是擁有一個只讀字段,但沒有成功。 該字段應包含在視圖中計算的代碼,但我需要將其顯示給用戶。
這是 Model:
class Customer(models.Model):
name = models.CharField(max_length = 250)
note = models.CharField(max_length=500,blank=True,null=True)
code = models.IntegerField(null=True,blank=True,unique=True)
這是表格:
class NewCustomerForm(forms.ModelForm):
class Meta:
model = Customer
fields = ['name', 'code', 'note']
這應該很容易,但我面臨很多問題。 我已經嘗試過的:
self.fields['code'].widget.attrs['readonly'] = True
in __init __self.fields['code'].widget.attrs['disabled'] = True
in __init __在所有三種方法中,該字段仍可由用戶編輯
如果html output中不需要代碼字段值,我建議從表單中排除該字段並計算表單視圖中的值是否有效。 您可以在保存之前將計算值分配給視圖中的 model 實例。
class YourView(views.CreateView):
def form_valid(self, form):
form.instance.code = your_calculated_value
return super().form_valid(form)
用戶始終可以編輯 HTML 輸入,即使您將readonly
或disabled
設置為 true,用戶也可以刪除這兩個標志並輸入一個值
但是,只要該字段呈現為readonly
或disabled
,並且用戶很明顯該字段是固定的,並且您的 python 代碼設置了一個忽略用戶輸入的固定值,那么您應該沒問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.