python
-
Django orm - group by해서 count 얻는 경우python 2019. 7. 10. 16:27
특정 모델에서 예를 들어 특정 조건의 누적된 사람 수를 구해야 하는 경우 user_id 가 지정된 유저의 id 라고 할때 다음과 같이 호출하면 변수명 = 모델명.objects.values('user_id').filter( 조건~~~ ).annotate(Count('user_id')).aggregate(count=Count('user_id')) 변수명에 'count' = 123123 이런식으로 나오는 것을 알 수 있다. 변수명 = 모델명.objects.values('user_id').filter( 조건~~~ ).annotate(Count('user_id')) 처럼 해서 무언가 될줄 알고 삽질을 여러번 했지만 안되서 뒤에 aggregate 와 같이 써야만 정확히 특정 조건의 누적된 사람 수를 알수 있었다.
-
python 시간차이 구하기python 2019. 7. 9. 14:50
디비의 시간과 특정 시간 혹은 디비 변수 시간 끼리 시간 차이를 구할때는 모델 파일에서 특정_모델.coun_real_start_date - self.rsv_period_start 이런 식으로 해서 구하는 것이 가능하다. 여기서 분을 구하려고 하면 int((특정_모델.coun_real_start_date - self.rsv_period_start).minutes ) 이렇게 하면 timedelta에서 minutes 는 없다고 에러가 난다. int((특정_모델.coun_real_start_date - self.rsv_period_start).seconds / 60) 이런식으로 해주면 앞의 변수가 시간이 큰 경우에 정상적으로 차이가 계산 되는 것을 볼 수 있다. 만약 현재 시간과 비교해서 차이를 구한다면 특정 ..
-
python timedelta에서 제공하는 시간 외 시간 구하기python 2019. 7. 8. 18:14
파이썬에서 시간을 더하거나 빼기를 할때 제공해주는 timedelta 라는 모듈이 있습니다. 하지만 이 timedelta 라는 모듈이 제공해주는 시간 단위는 seconds, hours, days, weeks 가 있습니다. 하지만 월이 없어서 days로 어거지로 할수는 있겠지만 월마다 day가 다르므로, 정확한 day 구하기가 쉽지가 않습니다. 구글링 하며 찾은 답은 relativedelta를 이용한 것입니다. from dateutil.relativedelta import relativedelta date = datetime.now() + relativedelta(months=1) 이런식으로 하면 현재로부터 한달 뒤를 구할 수 있습니다. date = datetime.now() - relativedelta(m..