可能是一个愚蠢的问题,但我不确定如何处理这个'正确'。
我有一些正常形式的字段。 我可以毫无问题地插入数据。 当我想编辑一条记录时,我正在使用“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?
答案 0 :(得分:1)
0
是一个有效的整数PK。请改用None
。
答案 1 :(得分:0)
首先,你为什么不使用ModelForm?这是处理这种情况的正确方法。
在回答你的问题'为什么是pk 0'时,这是因为如果没有将PK传递给函数,你已经明确地将它设置为0。如果您不想将其设置为0,请使用None
作为默认值。