django 시간 범위별 데이터베이스 실례 코드 조회

2680 단어
프론트 데스크톱에서 시간 범위를 얻고django 백엔드에서 Request의 데이터를 처리하여format을 완성하고 범위에 따라 함수 조회 데이터베이스를 호출합니다.
웹 폼에서 사용자가 지정한 시간 범위를 가져와 데이터베이스에서 이 시간 범위 내의 데이터를 조회하는 간단한 기능을 소개합니다.
데이터베이스의 모델은 다음과 같습니다.

class book(models.Model):  
  name = models.CharField(max_length=50, unique=True) 
  date = models.DateTimeField() 
    
  def __unicode__(self): return self.name 

만약 우리가 폼에서 얻은 Request를 가정한다면.GET 내의 시간 범위는 처음에 다음과 같습니다.

request.GET = {'year_from': 2010, 'month_from': 1, 'day_from': 1, 
        'year_to':2013, 'month_to': 10, 'day_to': 1}

모델에 저장된date 형식이 models.DateTimefield() 이기 때문에 리퀘스트의 데이터를datetime 형식으로 처리해야 합니다. (이것은django의 응답 코드의 앞부분입니다.)

import datetime 
 
def filter(request): 
  if 'year_from' and 'month_from' and 'day_from' and\ 
      'year_to' and 'month_to' and 'day_to' in request.GET: 
    y = request.GET['year_from'] 
    m = request.GET['month_from'] 
    d = request.GET['day_from'] 
    date_from = datetime.datetime(int(y), int(m), int(d), 0, 0) 
    y = request.GET['year_to'] 
    m = request.GET['month_to'] 
    d = request.GET['day_to'] 
    date_to = datetime.datetime(int(y), int(m), int(d), 0, 0) 
  else: 
    print "error time range!" 

다음은 획득한 date_from date_to를 단점으로 데이터베이스를 선별할 수 있습니다. __range 함수를 사용하여 위 코드에 데이터베이스 조회 동작을 추가해야 합니다.

import datetime 
 
def filter(request): 
  if 'year_from' and 'month_from' and 'day_from' and\ 
      'year_to' and 'month_to' and 'day_to' in request.GET: 
    y = request.GET['year_from'] 
    m = request.GET['month_from'] 
    d = request.GET['day_from'] 
    date_from = datetime.datetime(int(y), int(m), int(d), 0, 0) 
    y = request.GET['year_to'] 
    m = request.GET['month_to'] 
    d = request.GET['day_to'] 
    date_to = datetime.datetime(int(y), int(m), int(d), 0, 0) 
    book_list = book.objects.filter(date__range=(date_from, date_to)) 
    print book_list 
  else: 
    print "error time range!" 

총결산
이상은django가 시간 범위에 따라 데이터베이스 실례 코드를 조회하는 모든 내용에 대한 내용입니다. 여러분께 도움이 되었으면 합니다.관심 있는 친구는 본 사이트의 다른 관련 주제를 계속 참고할 수 있습니다. 부족한 점이 있으면 댓글로 지적해 주십시오.본 사이트에 대한 여러분의 지지에 감사 드립니다!

좋은 웹페이지 즐겨찾기