2010-01-23 91 views
2

可能是一個愚蠢的問題,但我不知道如何處理這個'正確的'。django - 如何保存表單(不是modelForm)

我用一些領域得到了一個正常的形式。 我可以插入數據沒有問題。 當我想編輯一條記錄時,我使用「model_to_dict」功能來填充表單。 編輯一條記錄後,我想保存它,這裏我的問題開始了。

django文檔說,模型根據pk值自動創建或更新記錄。如果pk值存在,則爲更新,否則爲插入。 所以我創造了這個保存功能:

def save(self, primary_key=0): 
    mymodel = Somemodel(pk=primary_key, 
     samplefield=self.cleaned_data['samplefield'], 
    ) 
    mymodel .save() 
    print 'PK:'+str(d.pk) 
    # Handle the MultipleChoiceField's 
    for x in self.cleaned_data['paymentMethod']: 
     x.mymodel_set.add(d) 

所以,這時候我編輯的記錄工作正常。 但是,當我插入一條新記錄時,它插入正常,但mymodel.id = 0這意味着我無法保存MultipleChoiceFields的關係。

所以我想知道這是否是處理這個問題的好方法? 保存模型後,爲什麼mymodel.id = 0?

回答

1

0是一個有效的整數PK。改爲使用None

+0

偉大的工程!非常感謝;) – Ben 2010-01-23 10:57:07

0

首先,你爲什麼不使用ModelForm?這是處理這種情況的正確方法。

在回答你的問題'爲什麼是pk 0'時,這是因爲如果沒有將PK傳遞到函數中,你明確地將它設置爲0。如果您不想將其設置爲0,請使用None作爲默認設置。

+0

嗨丹尼爾, 我使用正常形式,因爲我在處理modelForms上的多對多關係上的額外字段時遇到問題。 – Ben 2010-01-23 11:01:39