2015-04-20 20 views
15

मैं अपने admin.pyमैं Django में सभी मॉडलों के 1.8

from django.db.models import get_models, get_app 

for model in get_models(get_app('myapp')): 
    admin.site.register(model) 

में इस कोड का उपयोग कर रहा लेकिन मैं चेतावनी मिल कि get_models is deprecated

मैं करना कैसे कर सकते हैं कि Django 1.8 में

+0

यह एक चेतावनी है। क्या यह सक्रिय रूप से * आपको मॉडल परिणाम प्राप्त करने से रोक रहा है? मैं आपको चेतावनी देने के अलावा चेतावनी की अपेक्षा नहीं करता कि यह दृष्टिकोण भविष्य में Django संस्करण में जा रहा है। – Makoto

+3

@ मकोटो यह कहता है कि इसे 1.9 में हटा दिया जाएगा। मैंने सोचा कि कुछ महीनों में इसे फिर से शुरू करने के बजाय नवीनतम सामानों का उपयोग करना बेहतर होगा – user3214546

+0

यह माइग्रेट करना चाहते हैं यह एक पूरी तरह तर्कसंगत कारण है; हालांकि, आपका प्रश्न जिस तरह से पढ़ता है वह यह है कि आपको इस आदेश से मूल्यों को वापस पाने में परेशानी हो रही थी। मेरी चिंता यह थी कि यह आपको किसी भी जानकारी को वापस पाने से रोक रहा था, जो प्रतिद्वंद्वी होता। – Makoto

उत्तर

32

यह कैसे प्राप्त कर सकते हैं काम करना चाहिए,

from django.apps import apps 
apps.get_models() 

get_models विधि ret सभी स्थापित मॉडल की एक सूची है। आप तीन कीवर्ड तर्क include_auto_created, include_deferred और include_swapped भी पास कर सकते हैं।

यदि आप एक विशिष्ट ऐप के लिए मॉडल प्राप्त करना चाहते हैं, तो आप ऐसा कुछ कर सकते हैं।

from django.apps import apps 
myapp = apps.get_app_config('myapp') 
myapp.models 

यह उस ऐप के मॉडल के ऑर्डर्ड डिक्ट उदाहरण को वापस कर देगा।

+0

धन्यवाद, मैं केवल 'myapp' से मॉडल कैसे प्राप्त कर सकता हूं – user3214546

+0

मैंने व्यवस्थापक साइट को' admin.site.register (myapp.models [0]) जैसे पंजीकरण करने की कोशिश की लेकिन मुझे यह '' str 'ऑब्जेक्ट में कोई विशेषता नहीं है' _meta'' – user3214546

+1

ऐसा इसलिए है क्योंकि यह 'ऑर्डरर्ड डिक्ट' उदाहरण देता है। आप 'myapp.models.values ​​()' को कॉल करना चाहते हैं। –

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