आदेश उप फ़ोल्डरों में अपने मॉडल देने के लिए आवश्यक मैं के रूप में वर्णित here app_label मेटा क्षेत्र का उपयोग करने की कोशिश की।app_label के माध्यम से उप-निर्देशिका में मॉडल?
- परियोजना
- क्षुधा
- foo
- मॉडल
- __init_:
मेरे निर्देशिका संरचना इस तरह दिखता है _.py
- bar_model.py
- __init_:
- मॉडल
- foo
- क्षुधा
bar_model.py में मैं इस तरह मेरे मॉडल को परिभाषित:
from django.db import models
class SomeModel(models.Model):
field = models.TextField()
class Meta:
app_label = "foo"
मैं सफलतापूर्वक आयात कर सकते हैं मॉडल तो जैसे:
from apps.foo.models.bar_model import SomeModel
हालांकि, चल रहा है:
./manage.py syncdb
मॉडल के लिए तालिका का निर्माण नहीं करता। वर्बोज़ मोड में, हालांकि, मुझे लगता है कि ऐप "foo" ठीक से पहचाना गया है (यह सेटिंग.py में INSTALLED_APPS में है)। Foo के तहत model.py को मॉडल को स्थानांतरित करना काम करता है।
कुछ विशिष्ट app_label साथ या पूरे तंत्र कि syncdb द्वारा मान्यता प्राप्त किया जा रहा से इस मॉडल संरचना से बचाता है के साथ दर्ज नहीं किया सम्मेलन है?
निश्चित रूप से! अब यह काम कर रहा है। – nikola
धन्यवाद! हाँ, आप उन्हें '__init में आयात करने के __ py' की आवश्यकता होगी। और उन्हें देने के एक' मॉडल 'Meta' वर्ग के माध्यम से app_label'। –
महत्वपूर्ण @ mustafa.0x से इसके अलावा आप * चाहिए *) एक ही app_label लेबल नाम से आप मॉड्यूल का नाम या एक आप AppConfig रजिस्ट्री में प्रदान नहीं तो यह एक खाली OrderedDict वापसी होगी (के रूप में प्रदान करता है, तो आप apps.get_app_config मिल प्रदान करते हैं ('app_label')। django.apps.apps आयात करने के बाद मॉडल – danigosa