4

保存が成功した場合に成功メッセージを追加するだけのカスタム FormView クラスの mixin があるので、次のようにします。

class MessagesMixin(object):

    def form_valid(self, form):
        response = super(MessagesMixin, self).form_valid(form)
        messages.add_message(self.request,
                             messages.SUCCESS,
                             'Successfully created %s' % form.instance)
        return response

ご覧のとおり、これは実際には作成のみを対象としています。インスタンスが更新された場合、メッセージは引き続き「作成されました」と表示されます。form_valid メソッドで作成/更新を区別する方法はありますか?

4

1 に答える 1

5

1 つの解決策は、プロパティを mixin に追加してからUpdateCreateビューに設定することです。get_form_valid_msg動的なものが必要な場合は、静的プロパティを定義するか、オーバーロードできます。テストされていないコード:

from django.core.exceptions import ImproperlyConfigured

class MessagesMixin(object): 
    @property
    def form_valid_msg(self):
        raise ImproperlyConfigured("you're missing the 'form_valid_msg' property")

    def get_form_valid_msg(self):
        return self.form_valid_msg

    def form_valid(self, form):
        response = super(MessagesMixin, self).form_valid(form)

        msg = 'Successfully {form_valid_msg} {form}'.format(
            form_valid_msg=self.get_form_valid_msg(),
            form=form.instance
        )

        messages.success(self.request, msg)

        return response
于 2013-07-20T21:43:11.567 に答える