Django管理员,自定义错误消息?

时间:2009-09-02 19:04:23

标签: python django django-admin

我想知道如何在Django管理员中显示错误消息。

我的网站上有一个私人用户部分,用户可以使用“积分”创建请求。一个请求从用户的帐户中取1或2个点(取决于两种类型的请求),因此如果帐户有0分,则用户无法在私人用户部分发出任何请求...这一切都很好,但是用户也可以打电话给公司并通过电话提出请求,在这种情况下,我需要管理员在用户点数为0的情况下显示自定义错误消息。

任何帮助都会很好:)

谢谢你们

3 个答案:

答案 0 :(得分:20)

这样做的一种方法是覆盖管理页面的ModelForm。这允许您编写自定义验证方法并非常干净地返回您选择的错误。在admin.py中这样:

from django.contrib import admin
from models import *
from django import forms

class MyForm(forms.ModelForm):
    class Meta:
        model = MyModel
    def clean_points(self):
        points = self.cleaned_data['points']
        if points.isdigit() and points < 1:
            raise forms.ValidationError("You have no points!")
        return points

class MyModelAdmin(admin.ModelAdmin):
    form = MyForm

admin.site.register(MyModel, MyModelAdmin)

希望有所帮助!

答案 1 :(得分:4)

我已经将内置的Message系统用于此类事情。这是在添加/更改对象时在屏幕顶部打印黄色条的功能。您可以自己轻松使用它:

request.user.message_set.create(message='Message text here')

请参阅the documentation

答案 2 :(得分:1)

Django版本&lt; 1.2 https://docs.djangoproject.com/en/1.4/ref/contrib/messages/

from django.contrib import messages
messages.add_message(request, messages.INFO, 'Hello world.')