簡體   English   中英

Django 表單中的只讀字段

[英]Read-Only Field in Django Form

如何在 Django 表單中將字段設置為只讀? 我知道如何禁用一個字段,但這不是我要找的。 任何幫助,將不勝感激。

您可以在定義Field時使用可選的attrs參數。 以機智:

somefield = forms.CharField(
    widget=forms.TextInput(attrs={'readonly':'readonly'})
)

django 1.9中可用的 Field.disabled 屬性: https ://docs.djangoproject.com/en/1.9/ref/forms/fields/#disabled

disabled 布爾參數設置為 True 時,會使用 disabled HTML 屬性禁用表單字段,以便用戶無法對其進行編輯。 即使用戶篡改了提交給服務器的字段值,它也會被忽略,取而代之的是表單初始數據中的值。

除此以外

使用小部件“只讀”屬性

class PatientForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
       super(PatientForm, self).__init__(*args, **kwargs)
       self.fields['field'].widget.attrs['readonly'] = True

    class Meta:
        model = Patient

Django 1.9+

somefield = forms.CharField(disabled=True)

這是我讓它在 Js 中工作的唯一方法:

function myFieldOnChange() {
    var myField= document.getElementById("myFieldID")
    myField.setAttribute('readonly', true)

如果您在多個視圖中使用表單,也許在前端執行此操作的最佳方法之一是對小部件進行更多調整

如果你不想安裝額外的庫,你可以簡單地手動添加字段並使用 django 輸入屬性。 像這樣:

<input 
    name="{{ form.fieldname.name }}" 
    type="{{ form.fieldname.widget.input_type }}" 
    readonly="readonly"
    >
</input>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM