6

view.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

Model クラスで save メソッドをオーバーライドします。

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