2009-09-02 33 views
8

मैं जानना चाहता हूं कि Django व्यवस्थापक में एक त्रुटि संदेश कैसे दिखाना है।Django व्यवस्थापक, कस्टम त्रुटि संदेश?

मेरे पास मेरी साइट पर एक निजी उपयोगकर्ता अनुभाग है जहां उपयोगकर्ता "अंक" का उपयोग कर अनुरोध बना सकता है। अनुरोध उपयोगकर्ता के खाते से 1 या 2 अंक लेता है (दो प्रकार के अनुरोध के आधार पर), इसलिए यदि खाते में 0 अंक हैं तो उपयोगकर्ता कोई अनुरोध नहीं कर सकता ... निजी उपयोगकर्ता अनुभाग में यह सब ठीक है, लेकिन उपयोगकर्ता भी कंपनी को कॉल और फोन से अनुरोध कर सकते हैं, और इस मामले में मैं व्यवस्थापक जरूरत 0.

जा रहा है उपयोगकर्ता अंक के मामले में एक कस्टम त्रुटि संदेश प्रदर्शित करने के लिए किसी भी मदद के लिए किया जाएगा अच्छा :)

धन्यवाद दोस्तों

उत्तर

20

ऐसा करने का एक तरीका व्यवस्थापक पृष्ठ के लिए मॉडलफॉर्म को ओवरराइड करना है। यह आपको कस्टम सत्यापन विधियों को लिखने और आपके चयन की त्रुटियों को बहुत साफ तरीके से वापस करने की अनुमति देता है। इस तरह 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

सहमत हैं, लेकिन मुझे नहीं लगता था कि यह ओपी से स्पष्ट था कि यह एक रूप था। रीडिंग पर, आप शायद सही हैं, लेकिन यह वैसे भी एक उपयोगी तकनीक है। –

+0

नोट: यह विधि Django संस्करण <1.2 के लिए काम किया। 1.2 में संदेश ढांचे में बदलाव आया। प्रलेखन लिंक, संस्करण 1.1 दस्तावेज़ों के बजाय विकास संस्करण दस्तावेज़ों के लिंक से लिंक करता है, इसलिए अब यह उपरोक्त कोड के साथ असंगत है। यह शायद कोड स्निपेट या डॉक्स लिंक को अपडेट करने लायक होगा, जो भी आप चाहें। –

संबंधित मुद्दे