두 가지 모델, Director 및 Film이 있습니다.웹 쿼리 양식 만들기
사용자가 "1990 년과 1998 년 사이에 감독 '스티븐 스필버그'의 모든 영화를 검색 할 수 있도록 웹 쿼리 양식을 만들고 싶습니다.
이 작업을 수행하는 가장 쉽고 간단한 방법은 무엇일까요? 감사합니다,
두 가지 모델, Director 및 Film이 있습니다.웹 쿼리 양식 만들기
사용자가 "1990 년과 1998 년 사이에 감독 '스티븐 스필버그'의 모든 영화를 검색 할 수 있도록 웹 쿼리 양식을 만들고 싶습니다.
이 작업을 수행하는 가장 쉽고 간단한 방법은 무엇일까요? 감사합니다,
OK 가장 간단한 해결책은 그런 것입니다.
모델의 구조에 대해 몇 가지 가정을하고 있으므로 을 적절하게 조정하십시오.
은의이 우리의 models.pyfrom django.db import models
class Director(models.Model):
name = models.CharField(max_length=128)
# maybe some other fields...
class Film(models.Model):
title = models.CharField(max_length=128)
director = models.ForeignKey(Director)
created_at = models.DateField()
우리의 순진 views.py 내가 의도적으로 많은 정신 검사를 생략 명심하십시오입니다 가정 해 봅시다.
import datetime
from django.shortcuts import render_to_response
from myapp.models import Film
def search(request):
# Suppose we support these params -> ('director', 'fromdate', 'todate')
request_params = request.GET.copy()
fromdate = datetime.datetime.strptime(request_params['fromdate'], 'some-string-format')
todate = datetime.datetime.strptime(request_params['todate'], 'some-string-format')
# Our query is ready to take off.
film_results = Film.objects.filter(
director__name=request_params['director'],
created_at__range=(fromdate, todate)
)
return render_to_response('search_results.html', {'results':film_results})
우리 search_results.html 템플릿은
{% extends some_base.html %}
{% if results }
{% for film in results %}
<h3>{{ film.title }}</h3>
<p>Director: {{ film.director.name }}</p>
<p>When: {{ film.created_at }}</p>
{% endfor %}
{% else %}
<p>Sorry no results for your query</p>
{% endif %}
또한 문자열에서
편집을 날짜 객체를 만드는 방법에 대한 this 읽기 : 나는 urls.py과 실제 형태 :
잊어 오 url.py의은 url 패턴 안에 다음과 같이 추가합니다. 원하는 경우
가<form method='GET', action='/search/'>
... your fields
</form>
당신은 장고 양식을 통해 생성 할 수 있습니다
url(r'^search/$', 'myapp.views.search'),
이제 실제 검색 양식은 다음과 같이해야합니다. 어쨌든 이것은 당신을 멀리 얻지 못할 것입니다. 심각한 일을하는 경우
haystack
흠, 나는이 모든 것을 할 필요가 없을 것이라고 기대했다 ... 최종 사용자 만 날짜를 선택하고 저자가 없다면 어떻게 될까? 쿼리를 통해 1990 년에서 1998 년까지 모든 책을 가져올 수 있습니까? – thedeepfield
당신이 언급 한 것들은 내가 고의적으로 무시한 온전한 체크이다. 그러나 어떻게 이것을 자동화 할 수 있습니까? 설명 된 논리는 유연하지 않은 가정없이 유추 할 수 없습니다. 토론/사고가 필요한 유일한 것은 논리를 어디에 둘 것인지입니다. 보기 내부 또는 검색 양식에 있습니까? 당신이 결정합니다. – rantanplan
이런 유틸리티가 존재하지 않는다고 나는 믿는다. 리버스 ModelForm이 있다면 좋을 것입니다. 필드 유형을 살펴보고 검색 양식의 각 필드에 대한 데이터 범위를 가져옵니다.
지금 생각해 보면 텍스트 상자와 datepicker 범위를 만드는 데 어려움이 있습니다. 그리고 그 데이터를 하나의 관점에서 처리합니다.
사용자가 "면 처리"검색을 수행 할 수 있도록하려는 것처럼 들립니다. Django Haystack하면 그렇게 할 수 있습니다. 해당 설명서에는 faceting에 대한 정보가 들어 있습니다.
나는 당신이 무엇을 요구하고 있는지 잘 모르겠습니다. 매개 변수로 GET 요청을 처리하고 있습니까? 데이터베이스에 대한 질의? 양자 모두? 다른 것? – rantanplan
데이터베이스에 쿼리를하면 같은 결과를 얻을 수 있다고 생각하십니까? – thedeepfield