关于python:保存后从Django表单获取模型ID

Getting the model ID from a Django form after having saved it

view.py

1
2
3
someForm = SomeForm(request.POST)
...
someForm.customSave(request.user)

forms.py

1
2
3
4
5
6
7
8
9
class SomeForm(ModelForm):

    class Meta:
        model = Some

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

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


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

1
2
3
4
5
def customSave(self, user):
    lv = self.save(commit=False)
    lv.created_by = user
    lv.save()
    return lv

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

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

在调用 lv.save() 之后,只需使用 lv.pklv.id。保存后在实例上设置 ID。


在您的模型类中覆盖保存方法:

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