2010-01-23 69 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