6

视图.py

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

表格.py

class SomeForm(ModelForm):

    class Meta:
        model = Some

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

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

4

3 回答 3

10

由于 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
于 2012-04-13T17:01:09.553 回答
5

只需在调用后使用lv.pkor 。id 在保存后在实例上设置。lv.idlv.save()

于 2012-04-13T16:22:01.663 回答
1

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

def save(self, form, *args, **kwargs):
    super(MyModel, self).save(*args, **kwargs)
    logger.debug(self.id)
于 2014-01-21T12:40:45.283 回答