2012-04-13 38 views
2

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() 

私はモデル(またはモデル)のIDを取得することができますどのように保存された後、Djangoのフォームから機種IDを取得しますsomeFormから保存しましたか?

+0

私はChris '以下のように答えてください。なぜcustomSaveを作成するのではなく、フォームの保存をオーバーライドしていないのでしょうか?ここでもう少しです:http://stackoverflow.com/questions/3927305/django-how-to-override-form-save – joshcartme

+0

ちょうど私が実際に働く方法。 + 'customSave'を呼び出すと、私は' forms.py' – Sevenearths

答えて

6

ModelForm.saveの挙動は、インスタンスを返すことですので、あなたは、あなたがインスタンス上

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

lv.save()に電話した後、lv.pkまたはlv.idをそのまま使用してください。 idは保存後にインスタンスに設定されます。

1
をPKまたはIDにアクセスできますcustomSave方法

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

でインスタンスを返すようにしたいかもしれませんモデルクラスの

は、保存メソッドをオーバーライドします。

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