保存后,从Django表单中获取模型ID

时间:2012-04-13 16:11:52

标签: python django

view.py

someForm = SomeForm(request.POST)
...
someForm.customSave(request.user)

forms.py

class SomeForm(ModelForm):

    class Meta:
        model = Some

    def customSave(self,user):
        lv = self.save(commit=False)
        lv.created_by = user
        lv.save()

如何获取我刚从someForm保存的模型(或模型)的ID?

3 个答案:

答案 0 :(得分:6)

由于ModelForm.save的行为是返回实例,您可能希望在customSave方法中返回实例

def customSave(self, user):
    lv = self.save(commit=False)
    lv.created_by = user
    lv.save()
    return lv

然后您可以访问实例上的pk或id

inst = someForm.customSave(request.user)
inst.pk or inst.id

答案 1 :(得分:4)

在致电lv.pk后,只需使用lv.idlv.save()即可。保存后,在实例上设置id。

答案 2 :(得分:1)

Model类中的

覆盖了save方法:

def save(self, form, *args, **kwargs):
    super(MyModel, self).save(*args, **kwargs)
    logger.debug(self.id)