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

11

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

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

任何帮助都将很好:)

感谢大家

3个回答

21

一个方法是通过覆盖管理员页面的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)

希望能有所帮助!


甚至还有文档记录!http://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin - adam

5

我曾使用内置的消息系统来完成这样的事情。这是一种功能,当您添加/更改对象时,在屏幕顶部打印黄色条形图。您可以轻松地自己使用它:

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

请参阅文档

对于错误消息,表单验证是更好的选择(请参见Gabriel的答案)。 - Carl Meyer
同意,但我认为从 OP(原始帖)中并不清楚它是否是一个表单。重新阅读后,你可能是对的,但这仍然是一种有用的技术。 - Daniel Roseman
注意:此方法适用于Django版本<1.2。在1.2中,消息框架发生了变化。文档链接指向开发版本文档,而不是静态的1.1文档,因此现在与上面的代码不一致。最好更新代码片段或文档链接,以您喜欢的为准。 - Gabriel Hurley

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接