2009-09-02 1 views
8

장고 관리자에게 오류 메시지를 표시하는 방법을 알고 싶습니다.장고 관리자, 맞춤 오류 메시지?

사용자가 "포인트"를 사용하여 요청을 만들 수있는 내 사이트에 개인 사용자 섹션이 있습니다. 요청은 두 가지 유형의 요청에 따라 사용자 계정에서 1 ~ 2 포인트가 소요되므로 계정에 0 점이 있으면 사용자가 요청할 수 없습니다 ... 개인 사용자 섹션에서이 모든 사항은 문제가되지 않지만 사용자는 또한 회사에 전화하고 전화로 요청을하고,이 경우에 I가 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) 

희망 하시겠습니까?

+0

문서화되었습니다. http://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin – adam

4

저는 이런 종류의 메시지 시스템을 내장했습니다. 이것은 객체를 추가/변경했을 때 화면 상단에 노란색 막대를 인쇄하는 기능입니다. 다음과 같이 쉽게 사용할 수 있습니다.

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

the documentation을 참조하십시오.

+0

은 양식 유효성 검사는 (가브리엘의 답변을 참조) 더 나은 옵션입니다. –

+0

동의하지만, 그것이 OP인지 분명하지 않다고 생각했다. 다시 읽으면 아마 옳을 것입니다. 그러나 이것은 어쨌든 유용한 기법입니다. –

+0

참고 :이 방법은 Django 버전 1.2 이하에서 작동했습니다. 1.2에서는 메시지 프레임 워크가 변경되었습니다. 거기에있는 문서 링크는 정적 1.1 문서가 아닌 개발 버전 문서로 연결되므로 위의 코드와 일치하지 않습니다. 코드 스 니펫이나 문서 링크 중 원하는 것을 업데이트하는 것이 좋습니다. –