我想知道如何在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