2013-06-05 3 views
2

나는 다음 (단축) 장고 모델이 있습니다필터 장고의 검색어

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을 수행하지 않을 것입니다. 모든 제안

답변

1

에 대한

덕분에 난 내 경우 CONCAT 날짜에이 작업을 수행 한 것처럼 추가로 DB 기능 CONCAT를 사용할 수 있습니다.

Event.objects.all().order_by('-start_time').extra(select={'date':'concat(year(start_time),\"/\",month(start_time),\"/\",day(start_time))','time':'concat(hour(start_time),\":\",minute(start_time))','program_no':'program_id'}).values('id','program_no','event_type__name','venue__city','venue__state','venue__website','series_id','date','time') 

희망이 도움이 될 것입니다.

감사합니다.

+0

답변 해 주셔서 감사합니다. 이 질문에 대한 프로젝트가 완료되어 출하됩니다. 더 이상 코드에 액세스 할 수 없거나 코드를 변경해야합니다. 내가 다시 그 문제를 가져야한다면 나는 그것을 명심해야한다. – tannerli

관련 문제