سؤال

وبلدي الثاني مسألة ليست بهذه بارعون اليوم: لدي مشروع جانغو مع أربعة التطبيقات المثبتة. عند تشغيل syndb manage.py، فإنه يخلق فقط الجداول لاثنين منهم. على حد علمي، لا توجد مشاكل في أي من الملفات نماذج بلدي، وتحديد جميع التطبيقات في INSTALLED_APPS في ملف الإعدادات. syndb Manage.py فقط يبدو أن تجاهل اثنين من التطبيقات بلدي.

والشيء الوحيد الذي هو فريد من نوعه حول اثنين من "تجاهل" التطبيقات هو أن الملفات نماذج استيراد نماذج من اثنين من التطبيقات الأخرى واستخدامها كمفاتيح الأجنبية (لا أعرف إذا كان هذا هو جيدة / ممارسة سيئة، ولكن يساعد لي البقاء نظم). لا أعتقد أن هذه هي المشكلة على الرغم من أنني علق بها نماذج وجود مفتاح الأجنبية والجداول لا تزال لم تنشأ. أنا متعكز.

وUPDATE: عندما كنت التعليق خارج خطوط استيراد الملفات نماذج من تطبيقات أخرى، syndb يخلق الجداول بلدي. ربما أنا لا تفهم شيئا عن كيفية ارتباط نماذج الملفات في تطبيقات منفصلة لأخرى غيرها. أنا على الرغم من أنه كان طيب لاستخدام نموذج من التطبيق آخر كمفتاح خارجي ببساطة عن طريق استيراده. غير صحيح؟

هل كانت مفيدة؟

المحلول

ومما يؤسف له، manage.py فشل بصمت لتحميل التطبيق حيث هناك خطأ الاستيراد في models.py لها ( تذكرة # 10706 ). وهناك احتمالات بأن هناك خطأ مطبعي في أحد ملفات models.py الخاص بك ... التحقق من كافة البيانات استيراد كثب (أو استخدام pylint).

وsyncdb مؤخرا توقفوا تحميل اثنين من التطبيقات بلدي، وأعطى sqlall لي الخطأ "التطبيق مع فو التسمية لا يمكن العثور على". لا يعرفون أن هذا يعني أحيانا "تم العثور على التطبيقات مع فو التسمية ولكن لا يمكن تحميل بسبب ImportError تثار"، استغرق الأمر نصف ساعة لتحقيق ذلك كنت أحاول أن استيراد "haslib 'بدلا من' hashlib" في واحدة من بلدي models.py الملفات.

نصائح أخرى

وأعتقد أنني ركض عبر شيئا من هذا القبيل.

وكان لي مشكلة حيث نموذجا لم يتم إعادة تعيين. في هذه الحالة اتضح أن هناك خطأ في نماذج بلدي التي لم يتم بصق.

وعلى الرغم من أنني أعتقد syncdb عند تشغيله، بصق نوع من الخطأ.

في أي حال محاولة استيراد ملف النماذج الخاصة بك من قذيفة ومعرفة ما إذا كنت تستطيع.

$ manage.py shell
>>> from myapp import models
>>>

إذا ثيريس خطأ في هذا الملف أن أشير بها.

ووفقا لالتحديث، فإنه يبدو وكأنه قد يكون لديك قضية عبر الاستيراد. بدلا من:

from app1.models import X

class ModelA(models.Model):
    fk = models.ForeignKey(X)

وجرب:

class ModelA(models.Model):
    fk = models.ForeignKey("app1.X")

... على الرغم من أنني أعتقد أن عليك أن تحصل على خطأ على syncdb.

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