Django-tastypie: ImportError: Django 2.1μ—μ„œ 'QUERY_TERMS' 이름을 κ°€μ Έμ˜¬ 수 μ—†μŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2018λ…„ 08μ›” 01일  Β·  10μ½”λ©˜νŠΈ  Β·  좜처: django-tastypie/django-tastypie

μ•ˆλ…•,

방금 Python 3.5μ—μ„œ django-tastypie==0.14.1 λ₯Ό μ‚¬μš©ν•˜μ—¬ Django 2.0.7μ—μ„œ Django 2.1둜 μ—…λ°μ΄νŠΈν–ˆλŠ”λ° λ‹€μŒ 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

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

λ‚˜μ€‘μ— PR을 λ§Œλ“€μ–΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

Django의 μƒˆ λ¦΄λ¦¬μŠ€μ— λŒ€ν•œ μ™„μ „ν•œ ν˜Έν™˜μ„±μ„ κ΅¬ν˜„ν•˜λŠ” 데 일반적으둜 λͺ‡ μ£Όκ°€ κ±Έλ¦½λ‹ˆλ‹€.

이 ν•œ 문제의 경우 QUERY_TERMS 이(κ°€) μ΄λ™λ˜μ—ˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 그것을 λ‹€μ‹œ κ΅¬ν˜„ν•˜κΈ° λ³΄λ‹€λŠ” ORM이 μ§€μ›ν•˜λŠ” SQL μš©μ–΄ λͺ©λ‘μ„ μ–»λŠ” μƒˆλ‘œμš΄ μ˜¬λ°”λ₯Έ 방법을 μ°Ύμ•„μ•Ό ν•©λ‹ˆλ‹€.

QUERY_TERMS 이(κ°€) μ‚­μ œλœ 것 κ°™μŠ΅λ‹ˆλ‹€.

이것은 ν•΄κ²°ν•˜κΈ° μƒλ‹Ήνžˆ μ–΄λ €μš΄ 문제둜 λ°”λ€Œκ³  μžˆμŠ΅λ‹ˆλ‹€. tastypieλŠ” ν•„ν„°λ₯Ό μ‹ μ†ν•˜κ²Œ 사전 κ²€μ¦ν•˜κΈ° μœ„ν•΄ QUERY_TERMS 에 크게 μ˜μ‘΄ν•˜κ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€. ModelResource.build_filters λ₯Ό μ •λ°€ κ²€μ‚¬ν•˜μ§€ μ•Šκ³  ν•΄λ‹Ή μ—°μ‚°μž 집합을 λ‹€μ‹œ μƒμ„±ν•˜λŠ” μš°μ•„ν•œ 방법은 μ—†λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. μ–΄μ¨Œλ“  이것은 이미 κΈ°ν•œμ΄ μ§€λ‚¬μŠ΅λ‹ˆλ‹€. μƒμˆ˜ μ—°μ‚°μž λͺ©λ‘μ— λŒ€ν•œ μœ νš¨μ„± κ²€μ‚¬λŠ” μ›μˆ­μ΄ 패치 없이 더 λ§Žμ€ μ—°μ‚°μžλ₯Ό μΆ”κ°€ν•˜λŠ” 것을 λΆˆκ°€λŠ₯ν•˜κ²Œ ν–ˆμœΌλ©° μ—°μ‚°μžμ˜ μ „μ—­ λͺ©λ‘μ€ μ •μˆ˜ ν•„λ“œμ˜ λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•ŠλŠ” 필터와 같이 μ˜λ―Έκ°€ μ—†λŠ” ν•„λ“œλ₯Ό 톡해 λ¬΄μ˜λ―Έν•œ μž‘μ—…μ„ ν—ˆμš©ν•œλ‹€λŠ” 것을 μ˜λ―Έν–ˆμŠ΅λ‹ˆλ‹€.

μ•žμœΌλ‘œ κ²½λ‘œλŠ” μ•„λ§ˆλ„ build_filters λ₯Ό λ¦¬νŒ©ν† λ§ν•˜μ—¬ Django ν•„λ“œλ₯Ό κ²€μƒ‰ν•˜κ³  μƒˆ 쑰회 APIλ₯Ό μ‚¬μš©ν•˜μ—¬ μž‘μ—…μ„ 검증할 κ²ƒμž…λ‹ˆλ‹€.

이것은 #1564μ—μ„œ μˆ˜μ •λ˜μ–΄ django-2.1 뢄기에 λ³‘ν•©λ˜μ—ˆμŠ΅λ‹ˆλ‹€. κ·Έ λΈŒλžœμΉ˜λŠ” λ‹€λ₯Έ ν…ŒμŠ€νŠΈ μ‹€νŒ¨λ‘œ 인해 μΆœμ‹œν•  μ€€λΉ„κ°€ λ˜μ§€ μ•Šμ•˜μ§€λ§Œ(#1562 μ°Έμ‘°) λ‚˜λ¨Έμ§€ ν…ŒμŠ€νŠΈ μ‹€νŒ¨λŠ” QUERY_TERMS 와 관련이 μ—†μŒμ„ ν™•μΈν•˜μ—¬ 이 문제λ₯Ό 닫을 수 μžˆμŠ΅λ‹ˆλ‹€.

더 μ΄μƒμ˜ ν˜Όλž€μ„ ν”Όν•˜κΈ° μœ„ν•΄ λ‚˜λ¨Έμ§€ 2.1 지원이 κ΅¬ν˜„λ˜κ³  λ§ˆμŠ€ν„°μ— 병합될 λ•ŒκΉŒμ§€ 이 문제λ₯Ό μ—΄μ–΄ λ‘κ² μŠ΅λ‹ˆλ‹€.

ν…ŒμŠ€νŠΈ μŠ€μœ„νŠΈλŠ” 이제 Django 2.1을 ν†΅κ³Όν•©λ‹ˆλ‹€. κ·Έ 전에 μ£Όμš” 버그가 λ°œκ²¬λ˜μ§€ μ•ŠμœΌλ©΄ 9/3에 PyPI둜 λ¦΄λ¦¬μŠ€ν•  κ²ƒμž…λ‹ˆλ‹€.

이것은 λ˜ν•œ 4월에 EOL된 Django 1.8에 λŒ€ν•œ 지원을 μ€‘λ‹¨ν•©λ‹ˆλ‹€.

였늘 μΆœμ‹œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

잘 μž‘λ™ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. @georgedorn κ°μ‚¬ν•©λ‹ˆλ‹€!

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰