2009-12-04 11 views

उत्तर

54
from django.db import connection 
tables = connection.introspection.table_names() 
seen_models = connection.introspection.installed_models(tables) 

जैसा कि manage.py के लिए syncdb कमांड में देखा गया है।

नीचे एक टिप्पणी में, इस सवाल का जवाब ऊपर के बाद वर्ष, ThePhi का कहना है (मैं इसे परीक्षण नहीं किया):

from django.apps import apps 
from django.contrib import admin 
from django.contrib.admin.sites import AlreadyRegistered 

app_models = apps.get_app_config('my_app').get_models() 
+0

केवल स्थापित ऐप्स मॉडल प्राप्त करने के लिए तंत्र को शामिल करने के लिए संपादित किया गया। मैं वास्तव में syncdb कमांड कोड को देखने की सलाह देते हैं। – cethegeek

+0

यह उत्तर उन सभी तालिकाओं को सूचीबद्ध करता है जो मेरे django ने कभी भी उपयोग किए हैं, जिनमें उन ऐप्स द्वारा बनाए गए हैं जो INSTALLED_APPS में थे, लेकिन अब नहीं हैं। क्या वर्तमान में प्रासंगिक लोगों को खोजने का कोई तरीका है? – GreenAsJade

+0

भविष्य के संदर्भों के लिए: https://stackoverflow.com/a/31184258/1937033 Django 1.7 से, आप इस कोड का उपयोग कर सकते हैं, उदाहरण के लिए अपने व्यवस्थापक में सभी मॉडलों को पंजीकृत करने के लिए: 'django.apps आयात ऐप्स से django.contrib.admin.sites से django.contrib आयात व्यवस्थापक से आयात AlreadyRegistered app_models = apps.get_app_config ('my_app') get_models() app_models में मॉडल के लिए :। कोशिश: admin.site.register (मॉडल) पहले से ही रजिस्ट्रारर्ड को छोड़कर: पास ' – ThePhi

0

सरलतम विधि Django में डेटाबेस प्रतिबिंब एपीआई का उपयोग करने के डेटाबेस के लिए सीधे जाने के लिए होना चाहिए द्वारा बनाई गई तालिकाओं नहीं मिलता है। इस पर दोष यह है कि यह आपको समन्वयित करने से पहले कोई टेबल नहीं देगा।

9

सरल जवाब यह है कि अभी भी आप जो अपना इच्छित ऐप लेने के लिए अनुमति देता है, करने के लिए है अपने कोड को एक अतिरिक्त तर्क "include_auto_created" के साथ संशोधित करें।

from django.db.models import get_app, get_models 
app = get_app(app_name) 
for model in get_models(app, include_auto_created=True): 
    print model._meta.db_table 

जाहिर है मैं celope की सलाह निम्नलिखित syncdb स्रोत को पढ़ने के लिए द्वारा यह मिल गया है, तो उसके लिए धन्यवाद - बस एक सटीक जवाब ऐप्लिकेशन का नाम भी शामिल है कि के रूप में यह क्या मैं भी भविष्य में दूसरों चाहता था और संभवतः था दस्तावेजीकरण।

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