3
我試圖在使用多個模型的一個頁面上創建表單。模型相互引用。我無法獲取表單進行驗證,因爲我無法弄清楚如何將表單中使用的兩個模型的id轉換爲表單以驗證它。我用了一個隱藏式鍵的模板,但我無法弄清楚如何使它在視圖的工作django:如何從包含外鍵的多個模型中創建一個表單
我的代碼如下:
觀點:
def the_view(request, a_id,):
if request.method == 'POST':
b_form= BForm(request.POST)
c_form =CForm(request.POST)
print "post"
if b_form.is_valid() and c_form.is_valid():
print "valid"
b_form.save()
c_form.save()
return HttpResponseRedirect(reverse('myproj.pro.views.this_page'))
else:
b_form= BForm()
c_form = CForm()
b_ide = B.objects.get(pk=request.b_id)
id_of_a = A.objects.get(pk=a_id)
return render_to_response('myproj/a/c.html',
{'b_form':b_form,
'c_form':c_form,
'id_of_a':id_of_a,
'b_id':b_ide })
車型
class A(models.Model):
name = models.CharField(max_length=256, null=True, blank=True)
classe = models.CharField(max_length=256, null=True, blank=True)
def __str__(self):
return self.name
class B(models.Model):
aid = models.ForeignKey(A, null=True, blank=True)
number = models.IntegerField(max_length=1000)
other_number = models.IntegerField(max_length=1000)
class C(models.Model):
bid = models.ForeignKey(B, null=False, blank=False)
field_name = models.CharField(max_length=15)
field_value = models.CharField(max_length=256, null=True, blank=True)
形式
from mappamundi.mappa.models import A, B, C
class BForm(forms.ModelForm):
class Meta:
model = B
exclude = ('aid',)
class CForm(forms.ModelForm):
class Meta:
model = C
exclude = ('bid',)
B有一個外鍵引用A,C有一個外鍵引用B.由於模型是相關的,我想爲他們的形式在一個頁面上,1提交按鈕。由於我需要填寫B和C表格的字段&我不想從下拉列表中選擇B的ID,我需要以某種方式獲取B表單的ID到表單中,以便驗證。我在模板中有一個隱藏字段,我只需要計算如何在視圖中執行該操作。
你可能會解釋一點點你到底想要達到什麼目的,頁面上有兩種表單的意圖是什麼?你的意思是你需要根據用戶正在查看的頁面設置ForeignKey字段嗎? – 2010-06-17 17:44:21