2015-01-27 6 views
7

जब कोई फ़ील्ड डेटाबेस में शून्य हो जाता है, तो Django एक परिवर्तनीय प्रदर्शित करते समय शून्य के स्थान को पकड़ने के लिए "(कोई नहीं)" डालता है। वर्णनात्मक होने पर, जब परिवर्तक पर बहुत से फ़ील्ड होते हैं, तो यह सबकुछ देखने में बहुत व्यस्त होता है, जहां एक खाली क्षेत्र उतना सहायक होता है जितना उपयोगी होता है लेकिन बहुत कम अव्यवस्थित होता है। तो चेंजलिस्ट में शून्य क्षेत्रों का प्रतिनिधित्व करने के लिए Django का उपयोग करने वाले पाठ को बदलने का कोई तरीका है? कोई फर्क नहीं पड़ता कि समाधान modeladmin- विशिष्ट या व्यवस्थापक चौड़ा है।Django व्यवस्थापक चेंजलिस्ट में, मैं डिफ़ॉल्ट "(कोई नहीं)" के बजाय रिक्त स्थान कैसे प्रदर्शित करूं?

यह भी जोड़ना चाहिए कि मुझे उस समाधान के बारे में पता है जहां आप कस्टम फ़ील्ड को परिभाषित करते हैं और फिर रिक्त स्ट्रिंग आउटपुट करते हैं। यह काम करता है, लेकिन कॉलम को अयोग्य बनाता है, और यह प्रदर्शन से पहले प्राथमिकता है, इसलिए यह कोई विकल्प नहीं है।

+0

यदि आप केवल स्ट्रिंग फ़ील्ड से चिंतित हैं, तो आप हमेशा इसे रिक्त बना सकते हैं = सही, शून्य = गलत जो आपको वहां एक खाली स्ट्रिंग देगा (जो आप चाहते हैं)। –

+0

दुर्भाग्यवश, विदेशी कुंजी शामिल हैं। एक और सामान्य समाधान की उम्मीद है। – meesterguyperson

+0

संभावित डुप्लिकेट [Django व्यवस्थापक में EMPTY \ _CHANGELIST \ _VALUE कैसे बदलें?] (Http://stackoverflow.com/questions/18324030/how-to-change-empty-changelist-value-in-django-admin) –

उत्तर

8

आप इस समाधान के साथ व्यक्तिगत ModelAdmin व्यवहार को ओवरराइड कर सकते हैं:

from django.contrib.admin.views import main 
... 
... 
... 
class MyModelAdmin(admin.ModelAdmin): 
    def __init__(self,*args,**kwargs): 
     super(MyModelAdmin, self).__init__(*args, **kwargs) 
     main.EMPTY_CHANGELIST_VALUE = '-' 

नोट:__init__() ओवरराइड @admin.register() डेकोरेटर के साथ असंगत है, बजाय आप के बाद Model वर्ग परिभाषित किया गया है admin.site.register(Model, ModelAdmin) कॉल करने के लिए की आवश्यकता होगी।

+0

चालाक। अच्छा अंतरिम समाधान। :) –

12

Django 1.9 से शुरू करना यह व्यवहार बदल गया है और आपके द्वारा वर्णित स्थिति के समाधान के समर्थन में कुछ कस्टम कार्यक्षमता को जोड़ा गया था।

Django 1.9 के साथ, Django अब Django व्यवस्थापक में NULL दिखाने के लिए "(कोई नहीं)" के बजाय '-' (डैश) का उपयोग करता है।

इसके अलावा आप अब इस डिफ़ॉल्ट अनुकूलित कर सकते हैं '-' (पानी का छींटा) empty_value_display साथ Django व्यवस्थापक के लिए प्रदर्शन: विश्व स्तर पर, एक विशिष्ट व्यवस्थापक वर्ग या एक विशेष क्षेत्र के लिए:

वैश्विक स्तर पर:

# In settings.py to show '???' instead of '-' for all null django admin values 
from django.contrib import admin 
admin.site.empty_value_display = '???' 

एक Django व्यवस्थापक कक्षा में सभी क्षेत्रों के लिए:

# admin.py to show "Unknown Item field" instead of '-' for null values in all Item fields 
class ItemAdmin(admin.ModelAdmin): 
    empty_value_display = 'Unknown Item field' 

एक भी क्षेत्र के लिए:

+०१२३५१६४१०६
# admin.py to show "No known price" instead of '-' just for null price values in Item 
class ItemAdmin(admin.ModelAdmin): 
    list_display = ('name','price_view') 
    def price_view(self, obj): 
     return obj.price 
    price_view.empty_value_display = 'No known price' 
+0

क्या इस व्यवहार को Django 1.8 में प्राप्त करने का कोई तरीका है? –

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