DateTimeField를 기반으로하는 필터로 django queryset API 참조를 사용하려고합니다.django queryset filter datetimefield
내 models.py에, 다음과 같은 모델을 준비했습니다 :
class KleedkamerIndeling(models.Model):
gametimedate = models.DateTimeField(auto_now=False, auto_now_add=False) # date and time of game
hometeam = models.CharField(max_length=25, blank=True) # name of home playing team team
homedressroom = models.CharField(max_length=25, blank=True) # dressing room of home playing team
awayteam = models.CharField(max_length=25, blank=True) # name of visiting team team
awaydressroom = models.CharField(max_length=25, blank=True) # dressing room of visiting team team
pitch = models.CharField(max_length=25, blank=True) # name/number of playing pitch
referee = models.CharField(max_length=25, blank=True) # name of referee
refdressroom = models.CharField(max_length=25, blank=True) # name/number of referee dressroom
timestamp = models.DateField(auto_now_add=True, auto_now=False)
indelings_datum = models.DateField() # need to change to datum added later
def __unicode__(self):
return smart_unicode(self.hometeam)
내가 본 날짜를 기준으로 데이터베이스에 액세스 할 수 있습니다.
queryset = KleedkamerIndeling.objects.all().filter(gametimedate=date.today())
이것은 내가 '하여 DateField'사용하지만 난 또한 연주 게임의 시작 시간을 필요로하기 때문에 datetimefield로 이동하기로 결정하기 전에 일 : 무언가 같이해야합니다.
나는 웹과 stackoverflow를 검색했고 다음과 같은 이전 주제 인 How can I filter a date of a DateTimeField in Django?을 발견했지만 구현에 얽혀 있습니다.
오늘 날짜에 사용할 수있는 모든 'KleedkamerIndeling'을 가져 오는 쿼리 세트를 만들고 싶습니다. 그 후 목록에 10 개 이상의 개체가 있는지 확인하려고합니다. 그럴 경우, datetimefield의 필터를 통해 현재 시간을 기준으로 추가로 범위를 좁히고 싶습니다. 마지막으로 개체 목록을 정렬하여 시간순으로 정렬하려고합니다.
나는 내 문제가 datetimefield van의 caracteristics가 내가 앞으로 나아갈 수 있도록 몇 줄의 코드를 고맙게 생각한다는 것을 알고있다. 난 오후 내내 파이썬 manage.py 쉘에서 정확한 쿼리를 찾으려고 노력했다. ...
queryset = KleedkamerIndeling.objects.all()이 작동하는 것 같아서 내 모델을 설정하는 것이 가장 효과적이다. queryset 목록에서 'game0 through game10'이라는 각 객체에 대한 별도의 개별 목록을 만듭니다. 나는 13:00에 시작하는 게임을 설명하는 'KleedkamerIndeling를'정의
:
은 내가 datetimefield 형식에 더 문제가있다. 저는 쿼리 목록에있는 오브젝트를 사용하여 10 가지 '게임'객체를 정의했습니다. 즉 game0 = [queryset [0] .hometeam 등 ... 가능한 경우 game10. gametime 필드는 {{game0.0 | date : "H"}} : {{game0.0 | date : "i"}}와 같은 필터를 통해 템플릿에 표시됩니다. 게임 0 오브젝트가없는 경우에도 ':'로 끝납니다. 템플릿이나 뷰의 if else 스크립트를 통해이 문제를 해결할 계획입니까, 아니면이를 수정하는 더 좋은 방법이 있습니까?
위의 코드는 작동하는 것 같습니다. 감사! Python 셸에서이 작업을 시도하는 동안 Runtimewarming을 받고 수신 했습니까? 'RuntimeWarning : DateTimeFiled KleedkamerIndeling.gametimedate는 시간대 지원이 활성화 된 상태에서 순진한 datetime (2014-12-06 00:00:00)을 받았습니다.' 그러나 이것과 별개로 작동합니다! – borreltijd
시간대가 까다로울 수 있습니다. 장고 문서를 읽는 것이 좋습니다. https://docs.djangoproject.com/en/1.7/topics/i18n/timezones/#naive-and-aware-datetime-objects – Tim