class Timesave(models.Model):
objects = models.Manager()
save_user = models.ForeignKey(User, on_delete = models.CASCADE)
save_date = models.IntegerField(default=0)
input_date = models.IntegerField(default=0, null=True, blank=True)
def __str__(self):
return '%s - %s' % (self.save_user, self.save_date)
먼저 model입니다.
원래는 기존 Notices class처럼 input_date를 DateTimeField를 사용해서 시간을 저장하였지만
views에서 도저히 필터를 할수가 없었습니다 (형식이 안맞아서)
그래서 그냥 이렇게 해결하였습니다.
input_date를 IntegerField 선언
from datetime import datetime
from django.utils.dateformat import DateFormat
@login_required
@require_POST
def timesave(request):
if request.method == 'POST':
timesave = Timesave()
timesave.save_user = User.objects.get(username = request.user.get_username())
timesave.save_date = request.POST.get('time')
timesave.input_date = DateFormat(datetime.now()).format('Ymd')
timesave.save()
return HttpResponse(content_type='application/json')
input_date에는 datetime.now()를 사용해 현재 시간을 가져옵니다.
DateFormat을 이용해 'Ymd' 형식으로 저장합니다. (20200729)
그렇다면 오늘 날짜인 20200729로 IntegerField 저장
@login_required
def userinfo(request):
today = DateFormat(datetime.now()).format('Ymd')
print(today)
conn_user = request.user
conn_profile = Profile.objects.get(user=conn_user)
timesave = Timesave.objects.filter(input_date=today, save_user_id=conn_user)
sum = Timesave.objects.filter(input_date=today, save_user_id=conn_user).aggregate(Sum('save_date'))
values = sum.values()
...생략
today라는 변수에 마찬가지로 현재 날짜를 남아줍니다.
이제 filter을 걸어 input_date를 today로 맞춰주면
형식이 같아 오늘 날짜의 데이터를 추출 성공!
'코딩공부 > Python Django' 카테고리의 다른 글
heroku Syntax is: git@heroku.com:<app>.git where <app> is your app's name. (0) | 2020.07.30 |
---|---|
heroku git@heroku.com: Permission denied (publickey). (0) | 2020.07.30 |
django view에서 넘겨준 값 javascript로 받아주기 (0) | 2020.07.26 |
django 날짜 가져오기 (0) | 2020.07.23 |
django template extends multiple / django 템플릿 상속 두번하기 (0) | 2020.07.22 |