Django-tastypie: خطأ في الاستيراد: لا يمكن استيراد الاسم "QUERY_TERMS" على Django 2.1

تم إنشاؤها على ١ أغسطس ٢٠١٨  ·  10تعليقات  ·  مصدر: django-tastypie/django-tastypie

أهلا،

لقد قمت للتو بالتحديث إلى 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

django-update ready for release

التعليق الأكثر فائدة

تم إصلاح هذا في # 1564 ودمجه في الفرع django-2.1 . هذا الفرع غير جاهز للإصدار بسبب إخفاقات أخرى في الاختبار (انظر # 1562) ، لكنني أكدت أن حالات فشل الاختبار المتبقية لا تتعلق بـ QUERY_TERMS لذلك يمكن إغلاق هذه المشكلة.

ال 10 كومينتر

تختفي الرسالة بعد تغيير 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 شكرًا!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات