簡體   English   中英

更新視圖上的Django 1.9表單繼承

[英]Django 1.9 form inheritance on UpdateView

我的問題是我添加了一個字段。

我有我的表格:



    class employeesForm(forms.ModelForm):
        class Meta:
            fields = [
                'num_employee',
                'id_ignition',
                'fullName',
                'shortName',
                'salary',
                'gender',
                'rfc',
                'imss',
                'curp',
                'birthday',
                'initday',
                'id_costCenter',
                'id_jobCode',
                'id_status',
                'nationality',
                'picture',
                'source',
            ]


            widgets = {
                'num_employee': forms.NumberInput(attrs={'class': 'form-control', 'name': 'num_employee'}),
                'id_ignition': forms.NumberInput(attrs={'class': 'form-control', 'name': 'id_ignition'}),
                'fullName': forms.TextInput(attrs={'class': 'form-control', 'name': 'fullName', 'placeholder': 'Angel Rafael Ortega Vazquez'}),
                'shortName': forms.TextInput(attrs={'class': 'form-control', 'name': 'shortName', 'placeholder': 'Rafael Ortega'}),
                'salary': forms.NumberInput(attrs={'class': 'form-control', 'name': 'salary', 'placeholder': '5000'}),
                'gender': forms.CheckboxInput(attrs={'class': 'form-control', 'name': 'gender'}),
                'rfc': forms.TextInput(attrs={'class': 'form-control', 'name': 'rfc', 'id': 'rfc'}),
                'imss': forms.TextInput(attrs={'class': 'form-control', 'name': 'imss', 'id': 'imss'}),
                'curp': forms.TextInput(attrs={'class': 'form-control', 'name': 'curp'}),
                'birthday': forms.DateInput(attrs={'class': 'form-control', 'name': 'birthday'}),
                'initday': forms.DateInput(attrs={'class': 'form-control', 'name': 'initday'}),
                'id_costCenter': forms.Select(attrs={'class': 'form-control', 'name': 'id_costCenter'}),
                'id_jobCode': forms.Select(attrs={'class': 'form-control', 'name': 'id_jobCode'}),
                'id_status': forms.Select(attrs={'class': 'form-control', 'name': 'id_status'}),
                'nationality': forms.Select(attrs={'class': 'form-control', 'name': 'nationality'}),
                'picture': forms.ClearableFileInput(attrs={'class': 'form-control', 'name': 'picture'}),
                'source': forms.Select(attrs={'class': 'form-control', 'name': 'source'}),
            }

在我的模型中,我有一個額外的字段(上古),但在這里我忽略了它,因為在我的CreateView中,我根據其他參數(上古= initday)填充了該字段。

一切正常,直到我需要創建一個帶有預填充的額外字段的UpdateView為止,我所做的就是繼承預覽表單並添加該額外字段:



    class Enhanced_employeesForm(employeesForm):

        antiquity = forms.CharField(
            widget=forms.DateInput(attrs={'class': 'form-control', 'name': 'antiquity'}))

它確實做到了,輸入字段在我的模板中呈現,但是雖然所有內容都預先填充了基於id的信息,但我的上古字段為空。

這是我配置中唯一缺少的東西,因為django甚至會檢測提交時該字段為空,並阻止對數據庫的任何更新

我嘗試做類似的事情:

form.antiquity(instance=Employees.objects.get(pk=self.kwargs['pk']))

但是錯誤表明'Enhanced_employeesForm'對象沒有屬性'antiquity'。

我做錯了,我必須將此代碼添加到增強形式中:

class Enhanced_employeesForm(employeesForm):
    class Meta(employeesForm.Meta):
        employeesForm.Meta.fields += ['antiquity']

這就是問題所在。

如果您需要小部件,您可能會注意到所有內容都被覆蓋,以防止您需要此功能:

employeesForm.Meta.widgets['antiquity'] = forms.DateInput(attrs={'class': 'form-control'})

暫無
暫無

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

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