2010-08-09 6 views
6

Django व्यवस्थापक इंटरफ़ेस में परिवर्तन सूची दृश्य में है, यह कुछ क्षेत्रों/अगर वे एक अभिव्यक्ति प्राप्त में लाल पंक्तियों चिह्नित करने के लिए संभव है?फॉन्ट बदलें/Django व्यवस्थापक इंटरफ़ेस में एक क्षेत्र के लिए रंग अगर अभिव्यक्ति सच

उदाहरण के लिए, अगर वहाँ एक मॉडल members और capacity साथ Group, मैं कैसे कल्पना कर सकते हैं, जब वे पूर्ण या भीड़ हैं?

उत्तर

9

परिवर्तन सूची दृश्य में कैसे और क्या प्रदर्शित किया गया है, यह संशोधित करने के लिए, ModelAdmin के list_display विकल्प का उपयोग कर सकते हैं।

आपको याद है, list_display में दिए गए कॉलम जो वास्तविक डेटाबेस फ़ील्ड नहीं हैं, सॉर्टिंग के लिए उपयोग नहीं किए जा सकते हैं, इसलिए किसी को Django व्यवस्थापक को इस संकेत के बारे में एक संकेत देना होगा कि वास्तव में किस प्रकार के डेटाबेस क्षेत्र को सॉर्ट करने के लिए उपयोग किया जाए।

एक प्रतिदेय उदाहरण के लिए HTML में कुछ मूल्य रैप करने के लिए प्रयोग किया जाता करने के लिए admin_order_field विशेषता सेटिंग करके करता है। रंगीन क्षेत्रों के लिए Django डॉक्स से

उदाहरण:

class Person(models.Model): 
    first_name = models.CharField(max_length=50) 
    color_code = models.CharField(max_length=6) 

    def colored_first_name(self): 
     return '<span style="color: #%s;">%s</span>' % (
          self.color_code, self.first_name) 
    colored_first_name.allow_tags = True 
    colored_first_name.admin_order_field = 'first_name' 

class PersonAdmin(admin.ModelAdmin): 
    list_display = ('first_name', 'colored_first_name') 

मुझे आशा है कि इस में से कुछ मदद मिलती है।

+1

धन्यवाद, .allow_tags काम किया – kelvan

+0

ग्रेट उत्तर @rebus। क्या मॉडल के विरोध में 'PersonAdmin'' रंगीन_फर्स्ट_नाम' फ़ंक्शन और अटर्स को बाध्य करने के लिए वैसे भी है? यह मॉडल के लिए व्यवस्थापक विशिष्ट attrs निर्दिष्ट करने के लिए अजीब लगता है। – cooncesean

+1

@cooncesean हां, list_display का मान या तो मॉडल या व्यवस्थापक वर्ग पर विधि का एक स्ट्रिंग नाम हो सकता है, या यह कॉल करने योग्य का संदर्भ हो सकता है। [अधिक उदाहरणों के लिए दस्तावेज़ देखें] (https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display) –

2

इसके अलावा आप

colored_first_name.short_description = 'first name' 

उपयोग कर सकते हैं एक अच्छा स्तंभ शीर्षक

1

यह एक पुरानी सवाल है, लेकिन मैं Django 1.10 के लिये दस्तावेज से एक उदाहरण जोड़ देंगे क्योंकि allow_tags स्वीकार किए जाते हैं जवाब विशेषता में उपयोग किया है के लिए Django 1.9 के बाद से बहिष्कृत कर दिया गया है और यह बजाय format_html उपयोग करने के लिए सिफारिश की है:

from django.db import models 
from django.contrib import admin 
from django.utils.html import format_html 

class Person(models.Model): 
    first_name = models.CharField(max_length=50) 
    last_name = models.CharField(max_length=50) 
    color_code = models.CharField(max_length=6) 

    def colored_name(self): 
     return format_html(
      '<span style="color: #{};">{} {}</span>', 
      self.color_code, 
      self.first_name, 
      self.last_name, 
     ) 

class PersonAdmin(admin.ModelAdmin): 
    list_display = ('first_name', 'last_name', 'colored_name') 
संबंधित मुद्दे