2013-04-15 7 views
15

पर एक jQuery स्क्रिप्ट जोड़ना मैं स्थिति को थोड़ा सा सरल बनाने वाला हूं। मान लें कि मुझे लैब नामक एक मॉडल मिला है।Django व्यवस्थापक इंटरफ़ेस

from django.db import models 

class Lab(models.Model): 
    acronym = models.CharField(max_length=20) 
    query = models.TextField() 

क्षेत्र query लगभग हमेशा क्षेत्र acronym के समान है। इस प्रकार, मैं Django व्यवस्थापक इंटरफ़ेस में acronym फ़ील्ड में टेक्स्ट दर्ज करने के बाद query फ़ील्ड को स्वचालित रूप से भरना चाहता हूं। यह कार्य एक jQuery स्क्रिप्ट द्वारा किया जाना चाहिए।

तो यदि मैं एक उदाहरण लेता हूं: आप Django व्यवस्थापक इंटरफ़ेस के माध्यम से डेटाबेस में एक नई प्रयोगशाला जोड़ना चाहते हैं। आप ऐड बटन पर क्लिक करते हैं और आप दो फ़ील्ड के साथ खाली फॉर्म पर उतरते हैं। ABCD जैसे मान के साथ मैन्युअल रूप से acronym फ़ील्ड भरें और फिर query फ़ील्ड को उसी मूल्य के साथ पूर्ण रूप से पूरा किया जाना चाहिए, जिसका अर्थ ABCD है।

मुझे आगे कैसे बढ़ना चाहिए?

उत्तर

35

व्यवस्थापक करने के लिए मीडिया को जोड़ने के लिए आप बस, अपने व्यवस्थापक वर्ग के मेटा वर्ग मीडिया में जोड़ सकते हैं जैसे:

admin.py

class FooAdmin(admin.ModelAdmin): 
    # regular stuff 
    class Media: 
     js = (
      '//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js', # jquery 
      'js/myscript.js',  # project static folder 
      'app/js/myscript.js', # app static folder 
     ) 

admin.site.register(Foo, FooAdmin) 

मन अनुगामी अल्पविराम आप केवल तब एक फ़ाइल शामिल है, क्योंकि यह एक tuple होना है। आप इस तरह से सीएसएस में भी चुन सकते हैं।

व्यवस्थापक के पास पहले से ही (एक पुराना संस्करण) jquery शामिल है। होगा extend the admin

if (!$) { 
    $ = django.jQuery; 
} 

अपनी समस्या को हल करने के लिए, मैं: उपयोग के लिए यह शॉर्टकट के लिए 'myscript' फ़ाइल के शीर्ष करने के लिए इस जोड़ें। आप किसी भी डॉम नोड में किसी जेएस इवेंट को अपनी myscript फ़ाइल में अजाक्स कॉल को ट्रिगर करने के लिए सही व्यवस्थापक दृश्य में ट्रिगर करने के लिए जोड़ सकते हैं।

+2

यह बदल सकता है क्योंकि यह एक पुराना सवाल है, लेकिन Django 1.8.1 के रूप में, सीएसएस को लक्ष्य मीडिया के रूप में एक शब्दकोश के रूप में निर्दिष्ट किया गया है और मूल्य ऊपर के पथों का टुपल है। यदि यह गैर-विशिष्ट है तो एकाधिक मीडिया या 'सभी' को लक्षित करने के लिए अल्पविराम अलगाव का उपयोग करें। –

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