μλ ,
λ°©κΈ 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
μ λν μΆκ° μ 보λ₯Ό μ°Ύμ μ μλμ§ νμΈνκ² μ΅λλ€.
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 κ°μ¬ν©λλ€!
κ°μ₯ μ μ©ν λκΈ
μ΄κ²μ #1564μμ μμ λμ΄
django-2.1
λΆκΈ°μ λ³ν©λμμ΅λλ€. κ·Έ λΈλμΉλ λ€λ₯Έ ν μ€νΈ μ€ν¨λ‘ μΈν΄ μΆμν μ€λΉκ° λμ§ μμμ§λ§(#1562 μ°Έμ‘°) λλ¨Έμ§ ν μ€νΈ μ€ν¨λQUERY_TERMS
μ κ΄λ ¨μ΄ μμμ νμΈνμ¬ μ΄ λ¬Έμ λ₯Ό λ«μ μ μμ΅λλ€.