Django-tastypie: ImportError: tidak dapat mengimpor nama 'QUERY_TERMS' pada Django 2.1

Dibuat pada 1 Agu 2018  ·  10Komentar  ·  Sumber: django-tastypie/django-tastypie

Hai,

Saya baru saja memperbarui ke Django 2.1 dari Django 2.0.7 menggunakan django-tastypie==0.14.1 pada python 3.5 dan mengalami kesalahan ini:

...
  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'

Saya akan melihat apakah saya dapat menemukan informasi lebih lanjut tentang QUERY_TERMS

django-update ready for release

Komentar yang paling membantu

Ini telah diperbaiki di #1564 dan digabungkan ke dalam cabang django-2.1 . Cabang tersebut belum siap untuk dirilis karena kegagalan pengujian lainnya (lihat #1562), tetapi saya telah mengonfirmasi bahwa kegagalan pengujian yang tersisa tidak terkait dengan QUERY_TERMS sehingga masalah ini dapat ditutup.

Semua 10 komentar

Pesan menghilang setelah mengubah resource.py menjadi ini:

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',
   }

Saya akan mencoba membuat PR nanti

Biasanya dibutuhkan beberapa minggu untuk mengimplementasikan kompatibilitas penuh untuk rilis baru Django.

Untuk masalah yang satu ini, QUERY_TERMS mungkin dipindahkan; daripada mengimplementasikannya kembali, kita harus mencari cara baru yang tepat untuk mendapatkan daftar istilah sql yang didukung ORM.

Sepertinya QUERY_TERMS dihapus .

Ini berubah menjadi masalah yang cukup sulit untuk dipecahkan; yummypie sangat bergantung pada QUERY_TERMS untuk memvalidasi filter dengan cepat. Tampaknya tidak ada cara yang anggun untuk membuat ulang kumpulan operator itu tanpa merombak ModelResource.build_filters . Ini sudah lama tertunda; memvalidasi terhadap daftar operator yang konstan membuat tidak mungkin untuk menambahkan lebih banyak operator tanpa monkey-patching, dan daftar global operator berarti akan memungkinkan operasi yang tidak masuk akal melalui untuk bidang yang tidak masuk akal, seperti filter case-insensitive pada bidang bilangan bulat.

Jalur ke depan mungkin memfaktorkan ulang build_filters untuk mengambil bidang Django dan menggunakan api pencarian baru untuk memvalidasi operasi.

Ini telah diperbaiki di #1564 dan digabungkan ke dalam cabang django-2.1 . Cabang tersebut belum siap untuk dirilis karena kegagalan pengujian lainnya (lihat #1562), tetapi saya telah mengonfirmasi bahwa kegagalan pengujian yang tersisa tidak terkait dengan QUERY_TERMS sehingga masalah ini dapat ditutup.

Untuk menghindari kebingungan lebih lanjut, saya akan membiarkan masalah ini terbuka hingga dukungan 2.1 lainnya diimplementasikan dan digabungkan menjadi master.

Rangkaian pengujian sekarang lewat di bawah Django 2.1. Saya akan merilis ke PyPI pada 9/3 jika tidak ada bug utama yang ditemukan sebelum itu.

Ini juga akan menghentikan dukungan untuk Django 1.8, yang telah EOL kembali pada bulan April.

Dirilis hari ini.

Tampaknya berfungsi dengan baik, @georgedorn Terima kasih!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat