Amer Abdallah نشر 22 سبتمبر 2021 أرسل تقرير نشر 22 سبتمبر 2021 أحاول إنشاء عمليات ترحيل migrations داخل تطبيق جانغو Django موجود باستخدام الأمر makemigrations ولكنه يظهر الرسالة No changes detected عادةً ما أقوم بإنشاء تطبيقات جديدة في المشروع باستخدام الأمر startapp ولكني لم أستخدمه لهذا التطبيق عندما قمت بإنشائه. بعد محاولة أكتشاف الأخطاء، اكتشفت أنه لا يتم إنشاء ملفات ترحيل البيانات migrations لأن المجلد migrations غير موجود في أحد التطبيقات. هل سيكون من الأفضل إنشاء المجلد إذا لم يكن موجودًا أم سوف يسبب خطأ بعد ذلك أو يؤدي لمشكلة في قاعدة البيانات؟ 2 اقتباس
1 سامح أشرف نشر 22 سبتمبر 2021 أرسل تقرير نشر 22 سبتمبر 2021 لإنشاء عمليات ترحيل أولية لأحد التطبيقات بما في ذلك المجلد migrations، قم بتشغيل الأمر "makemigrations" وحدد اسم التطبيق. سيتم إنشاء مجلد migrations بشكل تلقائي. ./manage.py makemigrations <myapp> كما يجب تضمين تطبيقك في INSTALLED_APPS أولاً داخل الملف settings.py وإلا سوف يؤدي إلى ظهور خطأ بعدم وجود التطبيق من الأساس. تحتاج إلى تحديد اسم التطبيق إذا كان التطبيق لا يحتوي على مجلد migrations. وقد يحدث هذا إذا قمت بإنشاء التطبيق يدويًا، أو قمت بالترقية من إصدار قديم من جانغو Django لا يحتوي على أي ملفات تهجير migrations. إيضًا إذا لم تكن تستخدم الملف models.py وتستخدم مجلد models مخصص للنماذج فيجب أن تقوم بإنشاء الملف init، فعلى سبيل المثال، إن كنت تستخدم الملف my_model.py في المجلد models، فيجب أن تقوم بإنشاء الملف التالي: my_app/models/__init__.py أيضًا يجب أن تستدعي في داخله الملف my_model.py، على النحو التالي: from .my_model import MyModel 2 اقتباس
0 Ali Haidar Ahmad نشر 22 سبتمبر 2021 أرسل تقرير نشر 22 سبتمبر 2021 (معدل) هناك العديد من الأسباب المحتملة لعدم اكتشاف django لما سيتم ترحيله أثناء أمر makemigrations: يجب أنت تكون حزمة الترحيل في تطبيقك. أيضاً في INSTALLED_APPS، يوصى بتحديد مسار ال module app config كاملاً "application.apps.MyAppConfig" أيضاً يجب أن تتأكد من أنك قمت بتعيين ملف ال settings الصحيح manage.py makemigrations --settings mysite.settings ، ويفضل أن تقوم أيضاً بوضع اسم التطبيق بشكل صريح في manager.py makemigrations myapp - فهذا يساعدك على عزل المشكلة. أيضاً تأكد من أن لديك ال app_label الصحيح في model meta. أيضاً يمكنك تنفيذ الأمر makemigrations -v 3 الذي قد يساعدك في تحديد المشكلة. أيضاً يجب أن تتأكد من أن اسم التطبيق الخاص بك موجود في settings.py ا INSTALLED_APPS وإلا فلن يتم تشغيل عمليات الترحيل بغض النظر عن ما تفعله: INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', ] ثم قم بتنفيذ: ./manage.py makemigrations blog تم التعديل في 22 سبتمبر 2021 بواسطة Ali Haidar Ahmad 1 اقتباس
0 Ahmed Sharshar نشر 22 سبتمبر 2021 أرسل تقرير نشر 22 سبتمبر 2021 بالاضافة للحلول السابقة، قد تكون المشكلة في Meta subclass of models.. قد يكون لديك تعريف كالتالي سواء في apps.py أو models.py أو views.py : label = <app name> اذا كان هناك أي إحتمال بحيث أن meta class لا يحمل نفس العنوان label الخاص بالتطبيق خاصتك app ، قد لا يتم رصد أي تغيرات تحدث، ببساطة لانه لا يجد توافق بين ما تقوم بتغييره وما هو معرف عنده. لذا قد تحتاج الى تعديلها كالتالي: class ModelClassName(models.Model): class Meta: app_label = '<app name>' # <-- هذا ما يجب ضبطه باسم تطبيقك. field_name = models.FloatField() ... 1 اقتباس
0 محمد أبو عواد نشر 23 سبتمبر 2021 أرسل تقرير نشر 23 سبتمبر 2021 تستطيع تعيين فئة Meta افتراضيا إلى "managed = false". على سبيل المثال: class Rssemailsubscription(models.Model): id = models.CharField(primary_key=True, max_length=36) ... area = models.FloatField('Area (Sq. KM)', null=True) class Meta: managed = False db_table = 'RSSEmailSubscription' من خلال التغيير managed إلى True، سوف تبدأ ملفات التهجير في التقاط التغييرات. 1 اقتباس
السؤال
Amer Abdallah
أحاول إنشاء عمليات ترحيل migrations داخل تطبيق جانغو Django موجود باستخدام الأمر makemigrations ولكنه يظهر الرسالة
عادةً ما أقوم بإنشاء تطبيقات جديدة في المشروع باستخدام الأمر startapp ولكني لم أستخدمه لهذا التطبيق عندما قمت بإنشائه.
بعد محاولة أكتشاف الأخطاء، اكتشفت أنه لا يتم إنشاء ملفات ترحيل البيانات migrations لأن المجلد migrations غير موجود في أحد التطبيقات.
هل سيكون من الأفضل إنشاء المجلد إذا لم يكن موجودًا أم سوف يسبب خطأ بعد ذلك أو يؤدي لمشكلة في قاعدة البيانات؟
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.