이름이 Object 1
인 객체가 있고 그 객체가 get()
이 었으면 좋겠지 만,이 객체를 얻으려는 시도가있었습니다. object-1
, 이것을 수행 할 방법이 있습니까? 다음과 같이하십시오 :Django - Slugify가 조회를 얻습니다.
가능한 경우 내 모델에 여분의 슬러그 필드를 추가하지 마십시오.
이름이 Object 1
인 객체가 있고 그 객체가 get()
이 었으면 좋겠지 만,이 객체를 얻으려는 시도가있었습니다. object-1
, 이것을 수행 할 방법이 있습니까? 다음과 같이하십시오 :Django - Slugify가 조회를 얻습니다.
가능한 경우 내 모델에 여분의 슬러그 필드를 추가하지 마십시오.
에만 [-A-ZA-Z] +,하지만 당신을 허용하는 '이름'필드의 값에 일부 제한을 넣어해야합니다 할 수있다 :
def my_request(request, name):
un_slugified_name = name.replace('-', '')
objects = MyModel.objects.get(name=unslugified_name)
그러나 쿼리 문자열을 통과 한 이름은 정확히 데이터베이스의 내용이어야한다. YMMV. 내 충고, SlugField를 사용하십시오 :)
Slugify는 파이썬 함수입니다. 목표를 달성하기 위해 Django는 완전한 데이터베이스 (적어도 pk와 name
필드 포함)를 가져 와서 각 행에 대한 슬러그를 계산하고이를 주어진 매개 변수와 비교해야합니다. 그리고이 때문에, 매우 imperformant 것 :
TLDR : 없음
당신에게 동의하지만, 슬러그에 의한 검색이 OP를 위해 정말로 중요하다면, 그것을 추적하기위한 새로운 db 컬럼을 추가 할 수 있습니다. 모범 사례는 아니지만 할 수 있습니다. – Paolo