2010-08-03 3 views
1

나를 도울 수 있는지 궁금합니다.Django에서는 검색 상자와 카테고리별로 검색하고 필터링 할 수 있습니까?

한 페이지에 표시 될 데이터 목록이 있습니다. 간단한 검색 상자, 범주 목록 및 태그 목록을 사용하여 데이터 목록을 필터링 할 수 있습니다. 나는 그것을 기초부터 (JavaScript를 필요로하지 않으므로) 구축하려고 노력하고있다. 그러나 결국 그것은 검색 기준을 제출하고 Ajax를 사용하여 새로운 목록을 되 돌린다.

내 데이터베이스 ('대형', '소형'등)에 범주 목록이 있으며 내 데이터베이스 ('목제', '황동')에 태그 목록이 있습니다. 태그는 카테고리에있는 항목을 더 많이 필터링하는 데 사용됩니다. 나는 그 때 수색 상자가있다. 이상적으로는 사용자가 원하는 범주를 효과적으로 틱하고 원하는 태그를 쳐보고 키워드 검색을 허용 한 다음 해당 데이터를 모두 제출하여 쿼리 할 수 ​​있고 필터링 된 데이터의 새 목록을 반환 할 수 있기를 바랍니다 .

저는 장고 전문가가 아니며, 어떻게 그리고 어디서이 작업을해야할지 ... 장고리스트에서 체크 박스 목록, 태그를 체크리스트로 사용하는 장고 방법은 무엇입니까? 제출 버튼이있는 검색 상자 ... 제출할 때 모든 데이터를 가져 와서 데이터베이스에서 필요한 쿼리를 수행 할 수 있습니까? 나는이 일을 어떻게하는지 잘 모르겠다 ... 며칠 동안 Django Docs와 Django Book을보고 있었고 나는 일을하는 방식이 목록에없는 것으로 보인다.

모든 도움은 환상적입니다. 체크 박스 목록으로 카테고리를 뱉어

답변

1

,

체크 박스 목록으로 태그와 제출 버튼으로

검색 창 ...

이것은 <form>입니다 귀하의 HTML 페이지에. 그것은 아마 Django 모델의 어떤 것도 잘 매치하지 않을 것입니다. 수동으로 더 많거나 적게 구축 된 고유 한 양식입니다.

나는 모든 데이터를 가져 와서 데이터베이스에서 필요한 쿼리를 수행 할 수 있습니까?

보기 기능입니다.

당신은 아마 이와 같은 것을 가질 것입니다.

objects= SomeModel.objects 
if request.GET ... has categories ... 
    objects = objects.filter(... categories ...) 
if request.GET ... has tags ... 
    objects = objects.filter(... tags ...) 
if request.GET ... has search ... 
    objects = objects.filter(something__contains(search)) 
return render_to_response(... etc. ...) 

가 목록에있을 것 같지 않습니다 일을하고 있어요 방법.

여기 튜토리얼을 벗어났습니다.

어떻게해야합니까?

  1. 전체 자습서를 수행하세요. 모든 방법을 통해. 모든 단계. 그것은 당신의 문제를 해결하는 것 같지 않지만, 당신은 전체 튜토리얼을해야합니다.

  2. 모델을 디자인하십시오. 질문에서 모델을 언급하지 않았습니다. 그것은 절대적으로 가장 중요하고 근본적인 것입니다.

  3. 해당 모델의 기본 관리 인터페이스를 만듭니다.기본 관리자 인터페이스가 작동하도록하고 원하는 일을하십시오. 그것은 훌륭한 검색, 카테고리 및 태그 필터링을하고 있습니다.

    기본 관리자를 사용하려면 상당히 정교한 모델 및 양식 기능을 설계해야합니다. 선택 항목 및 다른 장점뿐만 아니라 모델에 메서드 함수를 추가해야 할 것입니다.

  4. 관리자 페이지가 원하는대로 가까워지면 나만의 맞춤보기를 작성할 수 있습니다.


각각 하나의 체크 박스는 내가이 읽을 어떻게 다른 이름 ('category_option_1', 'category_option_2'등)을 가지고 있습니다 ...? 나는 요청을 할 수 없다. 포스 [category_option_n]]?

정말요? 왜 귀하의 질문 말하지 않았습니까?

이 문제에 대해 문의 하시겠습니까?

for k in range(1024): 
    name = 'category_option_{0}'.format(k) 
    # Use request.POST.get(name,None) to build a `Q` object 
+0

lott 답장을 보내 주셔서 감사합니다. 나는 이것을 수동으로 할 필요가 있다고 생각하고있다. 관리자가 내 모든 물건을 올바르게 설정했습니다 ... 문제는 사용자 쪽입니다. 확인란을 사용하고 있으므로 여러 개의 범주 또는 태그를 선택할 수 있으며 각 단일 확인란의 이름은 'category_option_1', 'category_option_2'등입니다.이 부분은 내가보기 부분에 달라 붙었습니다 ... 어떻게합니까? 나는 이것들을 읽었다? 나는 요청을 할 수 없다. 포스 [category_option_n]]? 페이지의 모든 체크 박스에 대해 POST 체크가 필요하며 매우 좋지 않습니다. – littlejim84

+0

@ littlejim84 : "내가보기 부분에 갇혀 있습니다." 그런 다음 실제로 질문하십시오. 우리가 이것이 당신이 갇혀있는 곳이라고 추측하지 않기를 바랍니다. –

+0

lott 죄송합니다. 내가 당신을 불쾌하게 만들었습니다. 당신이 당신의 대답을 준 후에, 나는 그것을 따라하고 깨달았습니다. 당신의 대답은 시작하기에 도움이되었고, 공 굴리기를 얻었습니다. 그리고 나는 그것을 더 구체화 할 필요가있었습니다. 감사. – littlejim84

관련 문제