2013-02-28 28 views
0

我爲了節省一些打字發與外鍵的模型,我認爲這也是看起來比較清爽這樣:的Django與外國主要

class Model_Sub(models.Model): 
    some_fields 

class Model_Main(models.Model): 
    field_1 = models.ForeignKey(Model_Sub, related_name="sub_field_1") 
    field_2 = models.ForeignKey(Model_Sub, related_name="sub_field_2") 

但是,當我希望我的用戶提交窗體,我想要新的實例的子模型,而不是從查詢集。我希望Model_Sub可以作爲表單與主模型無縫集成。無論如何,使用ModelForm來實現這一點?

感謝您的幫助

大衛

+0

是'Model_Sum'求和函數,還是你指的是'Model_Sub'? – Cole 2013-02-28 21:37:37

+0

對不起,我指的是Model_Sub。修復。 – dajee 2013-02-28 21:47:53

+0

所以你想要一個可以將其值保存到一個新的外鍵實例的表單? – Cole 2013-02-28 21:57:47

回答

2

我想你想使用兩種型號的形式從Model_Sub類,然後使用它們來創建你的Main_Model對象

class SubForm(models.ModelForm): 
    class Meta: 
     model = Sub_Model 

def your_view(request): 
    if request.method == 'POST': 
     form1 = SubForm(request.POST, prefix='no1') 
     form2 = SubForm(request.POST, prefix='no2') 
     if form1.is_valid() and form2.is_valid(): 
      main_model = Main_Model(field1 = form1.save(), 
            field2 = form2.save()) 
      main_model.save() 
      #... 
    else: 
     form1 = SubForm(prefix = 'no1') 
     form2 = SubForm(prefix = 'no2') 
    return render(request, 'your_template.html', {'form1': form1, 
                'form2': form2}) 
+0

+1您是否在'your_view'中指'form2 = SubFo ....'? – Cole 2013-02-28 22:22:55

+0

ahh是的,我擔心我必須做這樣的事情,我的模型裏有更多的東西,因爲它是爲了我的大學的數據收集,我只是不知道是否有一個漂亮的Django的技巧,我可以用它來做到這一點。無論有用,+1。感謝您的幫助 – dajee 2013-02-28 22:42:52

+0

@Cole,謝謝,我編輯了我的文章 – 2013-02-28 23:24:13