我想知道如何在Django管理员中显示错误消息。Django管理员,自定义错误消息?
我在我的网站上有一个私人用户部分,用户可以使用“点数”创建请求。一个请求从用户的账户中取得1或2个点(取决于两种类型的请求),所以如果账户有0个点,用户不能提出任何请求......在私人用户部分中,这一切都很好,但用户也可致电该公司,并通过电话的请求,在这种情况下,我需要管理员展现在用户点的情况下,自定义错误消息是0
任何帮助将是不错:)
谢谢你们
我想知道如何在Django管理员中显示错误消息。Django管理员,自定义错误消息?
我在我的网站上有一个私人用户部分,用户可以使用“点数”创建请求。一个请求从用户的账户中取得1或2个点(取决于两种类型的请求),所以如果账户有0个点,用户不能提出任何请求......在私人用户部分中,这一切都很好,但用户也可致电该公司,并通过电话的请求,在这种情况下,我需要管理员展现在用户点的情况下,自定义错误消息是0
任何帮助将是不错:)
谢谢你们
一种方法是通过覆盖管理页面的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)
希望帮助!
我已经使用内置的消息系统这种事情。这是在添加/更改对象时在屏幕顶部打印黄色条的功能。你可以很容易地使用它自己:
request.user.message_set.create(message='Message text here')
的错误信息,表单验证是一个更好的选择(见加布里埃尔的答案)。 – 2009-09-03 15:43:05
同意,但我不认为从OP可以看出它是否是一种形式。在重读时,你可能是对的,但无论如何这都是一种有用的技巧。 – 2009-09-03 20:51:21
注意:此方法适用于Django版本<1.2。在1.2中,消息框架发生了变化。那里的文档链接链接到开发版本文档,而不是静态1.1文档,所以现在它与上面的代码不一致。这可能值得更新代码段或文档链接,无论你喜欢什么。 – 2010-04-20 21:41:18
的Django版本< 1.2
from django.contrib import messages
messages.add_message(request, messages.INFO, 'Hello world.')
甚至有文件记录! http://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin – adam 2011-05-24 21:34:49