django - 如何保存表单(不是modelForm)

时间:2010-01-23 10:47:19

标签: django forms save

可能是一个愚蠢的问题,但我不确定如何处理这个'正确'。

我有一些正常形式的字段。 我可以毫无问题地插入数据。 当我想编辑一条记录时,我正在使用“model_to_dict”函数来填充表单。 在编辑了我想要的记录之后保存它,这里我的问题就开始了。

django docs说模型会根据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?

2 个答案:

答案 0 :(得分:1)

0是一个有效的整数PK。请改用None

答案 1 :(得分:0)

首先,你为什么不使用ModelForm?这是处理这种情况的正确方法。

在回答你的问题'为什么是pk 0'时,这是因为如果没有将PK传递给函数,你已经明确地将它设置为0。如果您不想将其设置为0,请使用None作为默认值。