나는 다음 (단축) 장고 모델이 있습니다필터 장고의 검색어
class File(models.Model):
name = models.TextField()
directory = models.ForeignKey(Directory)
class Directory(models.Model):
path = models.TextField()
일반적으로 파일이 path + '/' + name
로 그에게 표시 한 사용자, f.e.을 '/bin' + '/' + 'bash' => '/bin/bash'
. 나는 파일을 찾을 수있는 검색 필드를 제공하려하지 않습니다.
Q() - Objects로 작업하는 경우 경로 또는 이름 중 하나에서 일치하는 항목을 검색 할 수 있지만 사용자가 '/bin/bash'
을 검색하면 실패합니다. 불행하게도이 먼저 모든 파일 이름에 실제로 존재뿐만 아니라 사람을 모든 디렉토리에 합류의 일종을 수행
files = File.objects.extra(select={'fullpath': 'path || "/" || name'},
tables=['directories'], order_by= ['fullpath']).distinct()
:
지금까지 내가 함께 왔어요. 또한 다른 필터를 추가 할 수 없습니다.
.filter(fullpath__icontains=query)
나는 추가 필드를 참조 할 수 없기 때문에
가능하다면 장고 OR-Mapper를 사용하고 DB에서 원시 SQL을 수행하지 않을 것입니다. 모든 제안
답변 해 주셔서 감사합니다. 이 질문에 대한 프로젝트가 완료되어 출하됩니다. 더 이상 코드에 액세스 할 수 없거나 코드를 변경해야합니다. 내가 다시 그 문제를 가져야한다면 나는 그것을 명심해야한다. – tannerli