سؤال

من أجل وضع النماذج الخاصة بي في المرحلين الفرعيين ، حاولت استخدام حقل 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top