【问题标题】:Django admin, custom error message?Django 管理员,自定义错误消息?
【发布时间】:2009-09-02 19:04:23
【问题描述】:

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

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

任何帮助都会很好:)

谢谢大家

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

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

    希望有帮助!

    【讨论】:

    【解决方案2】:

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

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

    the documentation

    【讨论】:

    • 对于错误消息,表单验证是更好的选择(参见 Gabriel 的回答)。
    • 同意,但我认为 OP 并不清楚它是否是一种形式。重读时,您可能是对的,但无论如何这是一种有用的技术。
    • 注意:此方法适用于 Django 版本
    【解决方案3】:

    Django 版本 https://docs.djangoproject.com/en/1.4/ref/contrib/messages/

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

    【讨论】:

      猜你喜欢
      • 2011-07-03
      • 2011-03-15
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 2019-11-21
      相关资源
      最近更新 更多