أهلا،
لقد قمت للتو بالتحديث إلى Django 2.1 من Django 2.0.7 باستخدام django-tastypie==0.14.1
على python 3.5 وواجه هذا الخطأ:
...
File "<frozen importlib._bootstrap_external>", line 673, in exec_module
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
File "/var/www/brownpapersession/dev/brownpapersession/brownpapersession/urls.py", line 16, in <module>
from tastypie.api import Api, NamespacedApi
File "/var/www/brownpapersession/dev/env/lib/python3.5/site-packages/tastypie/api.py", line 11, in <module>
from tastypie.resources import Resource
File "/var/www/brownpapersession/dev/env/lib/python3.5/site-packages/tastypie/resources.py", line 32, in <module>
from django.db.models.sql.constants import QUERY_TERMS
ImportError: cannot import name 'QUERY_TERMS'
سأرى ما إذا كان بإمكاني العثور على مزيد من المعلومات حول QUERY_TERMS
تختفي الرسالة بعد تغيير resource.py
إلى هذا:
try:
from django.db.models.sql.constants import QUERY_TERMS
except ImportError:
# Django 2.1
QUERY_TERMS = {
'exact', 'iexact', 'contains', 'icontains', 'gt', 'gte', 'lt', 'lte', 'in',
'startswith', 'istartswith', 'endswith', 'iendswith', 'range', 'year',
'month', 'day', 'week_day', 'hour', 'minute', 'second', 'isnull', 'search',
'regex', 'iregex',
}
سأحاول إنشاء علاقات عامة لاحقًا
عادة ما يستغرق الأمر بضعة أسابيع لتنفيذ التوافق الكامل لإصدار جديد من Django.
لهذه المشكلة ، ربما تم نقل QUERY_TERMS
؛ بدلاً من إعادة تنفيذه ، يجب أن نكتشف الطريقة الصحيحة الجديدة للحصول على قائمة بمصطلحات SQL التي يدعمها ORM.
يبدو أنه تمت إزالة QUERY_TERMS
.
هذا يتحول إلى مشكلة يصعب حلها إلى حد ما ؛ كان tastypie يعتمد بشدة على QUERY_TERMS
للتحقق المسبق من صحة الفلاتر بسرعة. لا يبدو أن هناك طريقة رائعة لإعادة إنشاء هذه المجموعة من المشغلين دون إصلاح ModelResource.build_filters
. هذا أمر طال انتظاره ، على أي حال ؛ جعل التحقق من الصحة مقابل قائمة ثابتة من المشغلين من المستحيل إضافة المزيد من المشغلين بدون تصحيح القردة ، والقائمة العالمية للمشغلين تعني أنها ستسمح بعمليات غير منطقية للحقول التي لا معنى لها ، مثل مرشح غير حساس لحالة الأحرف في حقل عدد صحيح.
من المحتمل أن المسار إلى الأمام يعيد بناء build_filters
لاسترداد حقل Django واستخدام واجهة برمجة تطبيقات البحث الجديدة للتحقق من صحة العملية.
تم إصلاح هذا في # 1564 ودمجه في الفرع django-2.1
. هذا الفرع غير جاهز للإصدار بسبب إخفاقات أخرى في الاختبار (انظر # 1562) ، لكنني أكدت أن حالات فشل الاختبار المتبقية لا تتعلق بـ QUERY_TERMS
لذلك يمكن إغلاق هذه المشكلة.
لتجنب المزيد من الالتباس ، سأترك هذه المشكلة مفتوحة حتى يتم تنفيذ بقية دعم 2.1 ودمجها لإتقانها.
مجموعة الاختبار تمر الآن في ظل Django 2.1. سأطلق سراح PyPI في 9/3 إذا لم يتم العثور على أخطاء كبيرة قبل ذلك الحين.
سيؤدي هذا أيضًا إلى انخفاض الدعم لـ Django 1.8 ، والذي كان EOL كان في أبريل.
صدر اليوم.
يبدو أنه يعمل بشكل جيد ، georgedorn شكرًا!
التعليق الأكثر فائدة
تم إصلاح هذا في # 1564 ودمجه في الفرع
django-2.1
. هذا الفرع غير جاهز للإصدار بسبب إخفاقات أخرى في الاختبار (انظر # 1562) ، لكنني أكدت أن حالات فشل الاختبار المتبقية لا تتعلق بـQUERY_TERMS
لذلك يمكن إغلاق هذه المشكلة.