نموذج في الدليل الفرعي عبر app_label؟
-
21-09-2019 - |
سؤال
من أجل وضع النماذج الخاصة بي في المرحلين الفرعيين ، حاولت استخدام حقل App_Label Meta كما هو موضح هنا.
يبدو أن هيكل الدليل الخاص بي هكذا:
- مشروع
- تطبيقات
- فو
- عارضات ازياء
- __init__.py
- bar_model.py
- عارضات ازياء
- فو
- تطبيقات
في 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" معروف بشكل صحيح (إنه في تثبيت _apps في الإعدادات. نقل النموذج إلى models.py تحت FOO يعمل.
هل هناك بعض الاتفاقية المحددة لم يتم توثيقها باستخدام APP_LABEL أو مع الآلية بأكملها التي تمنع بنية النموذج من التعرف عليها بواسطة SYNCDB؟
المحلول
انظر تذكرة Django #10985: اشرح كيف يمكن تنظيم النماذج في دليل
قد لا تستورد النماذج الخاصة بك __init__.py
?
نصائح أخرى
syncdb
لن يقوم بإنشاء جداول للنماذج غير الموجودة في <appname>.models
, ، لذا استيراده هناك ، على سبيل المثال from apps.foo.models import SomeModel
.