モデルの特定のフィールドに対して基本的にQuerySet.update()
を実行するカスタム管理アクションを記述しました。これらのアクションを完了してはならない場合があります-代わりに、エラーが表示され、何も実行されません。私はもう試した message_user
ですが、緑色のチェックマークが表示されますが、Django adminエラーメッセージが表示されます。
オンラインで見つけた解決策はModelForm
を使用することですが、ここではすべてが管理者変更リストページで行われるため、この場合は当てはまらないと思います。
message_user
管理者内で使用される関数は単にcontrib.messages
パッケージ。あなたはこのようなことを試すことができます:
from Django.contrib import messages
# Then, when you need to error the user:
messages.error(request, "The message")
warning
の代わりにdebug
、info
、success
およびerror
を使用することもできます
お役に立てば幸いです。
from Django.contrib import messages
...
self.message_user(request, "The message", level=messages.ERROR)
Сanも使用されます(messages.ERROR、messages.WARNING、messages.DEBUG、messages.INFO、messages.SUCCESS)
Django.contrib.messagesバックエンドを使用できます
def my_action(self, request, queryset):
#do something
from Django.contrib import messages
messages.error(request,'Error message')
これにより、エラーメッセージと赤いエラー記号が表示されます。
これが新しいDjangoバージョンで修正されたかどうかはわかりません(Django 1.2.1およびDjango-grappelli 2.0でも説明されている動作を見つけました))。上記のBartekの方法を使用する場合、メッセージを別の方法で表示するように管理テンプレートを変更することもできます。具体的にはbase.htmlで:
これを変える:
{% if messages %}
<ul class="messagelist">{% for message in messages %}<li>{{ message }}</li>{% endfor %}</ul>
{% endif %}
これに:
{% if messages %}
<ul class="messagelist">{% for message in messages %}<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message}}</li>{% endfor %}</ul>
{% endif %}
さらに、CSSを微調整する必要があるかもしれませんが、少なくともHTMLの別のliクラスとして表示されます。
ここにCSSの変更例があります(grappelliと互換性があります)
ul.messagelist li.error {
background: url('../img/icons/icon-no.png') 20px 50% no-repeat;
background-color: #f2e6e6;
}