ユーザーフィールドを持つモデルがいくつかあります。
self.user
この目的のために、インスタンス (ビューでフォームに提供される) を追加するフォーム mixin を作成したいと思います。出来ますか ?
これが例です
class UserFormMixin(object):
"""Removes user instance from kwargs and adding it to object"""
def __init__(self, *args, **kwargs):
super(UserFormMixin, self).__init__(*args, **kwargs)
self.user = kwargs.pop('user')
def save(self, **kwargs):
obj = super(UserFormMixin, self).save(commit=False)
obj.user = self.user
if kwargs['commit']:
return obj.save()
else:
return obj
私が達成したいこと:
class SomeFormWithUserField(UserFormMixin, ModelForm):
class Meta:
model = SomeModelWithUserField
fields = ['fields without user']
def save(self, **kwargs):
data = super(SomeFormWithUserField, sefl).save(commit=False)
#data already with user prepended
#do some other stuff with data
if kwargs['commit']:
return data.save()
else
return data
class SomeOtherFormWithUser(UserFormMixin, ModelForm):
class Meta:
model = SomeOtherModel
fields = ['some fields without user']
# no need to save here.. standard model form with user prepended on save()
問題は、UserFormMixin がモデル インスタンスを認識していないことですか? それとも私はここで間違っていますか?私はいくつかの問題を抱えています..「コミット」kwargsキーエラー..またはオブジェクトが保存されていない..