編輯2:對於一個形式。我想我已經做了有)保存的壓倒一切的(方法,像這樣(forms.py)個性化的形式:
class YourForm(forms.Form):
fname = forms.CharField(label="name",max_length=70,validators=[#Choose your validators here])
fundergrad = forms.CharField(label="fundergrad",max_length=100,validators=[#Choose your validators here])
fundergrad_major = forms.CharField(label="fundergrad_major",max_length=80,validators=[#Choose your validators here])
fgrad = forms.CharField(label="fgrad",max_length=100,validators=[#Choose your validators here])
fgrad_major = forms.CharField(label="fgrad_major",max_length=80,validators=[#Choose your validators here])
def save(self, datas):
res = Resumes()
res.name = datas['fname']
undergrad = Universities()
undergrad_major = Majors()
grad = Universities()
grad_major = Majors()
undergrad.name = datas['fundergrad']
undegrad_major.name = datas['fundergrad_major']
grad.name = datas['fgrad']
grad_major.name = datas['fgrad_major']
undergrad.save()
undergrad_major.save()
grad.save()
grad_major.save()
res.undergrad = undergrad
res.undergrad_major = undergrad_major
res.grad = grad
res.grad_major = grad_major
res.save()
return res
在views.py:
def formView(request) :
if request.method == 'POST':
form = YourForm(request.POST)
if form.is_valid():
datas={}
datas['fundergrad']=form.cleaned_data['fundergrad']
datas['fundergrad_major']=form.cleaned_data['fundergrad_major']
datas['fgrad']=form.cleaned_data['fgrad']
datas['fgrad_major']=form.cleaned_data['fgrad_major']
form.save(datas)
#Then do what you have to do in your view
EDIT1:(沒有按「T回答的問題,但它可以幫助別人,也許只好讓在這裏)
我會在admin.py像這樣嘗試:
class UniversitiesInline1(admin.StackedInline):
model:Universities
fk_name = "undergrad"
class UniversitiesInline2(admin.StackedInline):
model = Universities
fk_name = "grad"
class MajorsInline1(admin.StackedInline):
model = Majors
fk_name = "undergrad_major"
class MajorsInline2(admin.StackedInline):
model = Majors
fk_name = "grad_major"
class ResumesAdmin(admin.ModelAdmin)
inlines = [
UniversitiesInline1,
UniversitiesInline2,
MajorsInline1,
MajorsInline2,
]
admin.site.register(Resumes, ResumesAdmin)
解釋:https://docs.djangoproject.com/en/dev/ref/contrib/admin/#working-with-a-model-with-two-or-more-foreign-keys-to-the-same-parent-model
啊我擔心自定義保存自定義窗體將是唯一的解決方案(我開始在發佈我的問題之前走相同的路線)。 ModelForms +內聯表單的描述看起來完全適合,但我想這不適用於我的模型。我會在一兩天內拋出問題,並希望在接受之前不是這樣。我也會測試代碼,並讓它知道它是否有效。謝謝。 –
實際上,自定義表單總是允許您更多的自由:顯示樣式,字段類型,字段小部件,驗證器和自定義驗證器,複雜驗證(例如,如果您想檢查它們之間的字段)。您可以使用自定義表單輕鬆完成所有操作,簡單的Django表單不允許進行過多的自定義操作。 –
當用戶輸入數據未正確驗證時,此模式無法解決模型未能保存 – Jay