홈>
다음과 같은 모델이 있습니다 :
class Payment(TimeStampModel):
timestamp = models.DateTimeField(auto_now_add=True)
amount = models.FloatField()
creator = models.ForeignKey(to='Payer')
일일 평균 지출을 계산하는 올바른 방법은 무엇입니까? 나는 하루 단위로 집계 할 수 있지만, 지불 인이 아무것도 지출하지 않는 날은 계산되지 않습니다.
업데이트 :
내 데이터베이스에 3 월 1 일부터 1 월 1 일까지 두 개의 레코드 만 있다고 가정 해 봅시다. 하루 평균 지출은 무엇인가
(Sum of all spendings) / (March 1 - January 1)
60으로 나눈
물론 이것은 물론 항목 당 평균 지출을 제공하며 며칠 동안 나에게 2를 줄 것입니다 :
for p in Payment.objects.all():
print(p.timestamp, p.amount)
p = Payment.objects.all().dates('timestamp','day').aggregate(Sum('amount'), Avg('amount'))
print(p
출력 :
2019-03-05 17:33:06.490560+00:00 456.0
2019-01-05 17:33:06.476395+00:00 123.0
{'amount__sum': 579.0, 'amount__avg': 289.5}
- 답변 # 1
- 답변 # 2
최소 및 최대 타임 스탬프와 총액을 집계 할 수 있습니다 :
from django.db.models import Min, Max, Sum def average_spending_per_day(): aggregate = Payment.objects.aggregate(Min('timestamp'), Max('timestamp'), Sum('amount')) min_datetime = aggregate.get('timestamp__min') if min_datetime is not None: min_date = min_datetime.date() max_date = aggregate.get('timestamp__max').date() total_amount = aggregate.get('amount__sum') days = (max_date - min_date).days + 1 return total_amount / days return 0
와이즈 비가 있다면 그런 다음 db 테이블에 일부 데이터가 있으며 최대 날짜 및 총 금액도 있습니다. 그렇지 않으면 0 또는 원하는 것을 반환합니다.
min_datetime
관련 자료
- python - Django에서 모델의 각 인스턴스를 찾는 방법
- python - 사용자 정의 사용자 모델을 사용한 Django 사용자 가입이 작동하지 않습니다
- rest - 관계를 사용하여 장고 모델 클래스의 중첩 된 뷰를 만들려고합니다
- python - 다른 모델의 django 사용자로부터 특정 사용자를 얻는 방법
- python - 동일한 모델의 다른 필드 값을 사용하여 장고 모델에서 필드를 만드는 방법은 무엇입니까?
- python - Django에서 모델의 인스턴스를 만들 때 모델의 길이를 얻는 방법
- 외래 키와 이중 밑줄로 장고 모델 작업
- python - 전자 상거래 응용 프로그램에서 사용자 모델을 확장하는 Django
- python - serializersserialize () 함수로 장고 모델 쿼리 셋을 직렬화
- python 3.x - 모델에서 Django 필드에 대한 타이핑 지정 (Pylint)
- python - 장고 - 매 (fk)마다 모델의 마지막 객체를 인쇄
- python - Django Admin의 변경 페이지에서 테이블을 사용하여 모델 필드 표시
- python - 장고보기에서 모델의 선택 필드 변경
- Python Django - 파이썬 장고 - "auth_user_model은 (는) 설치되지 않은 모델 '% s'을 (를) 참조합니다"% 설정
- python - 장고 관리자 변경 목록 - 관련 모델 변경 페이지로 연결
- python : Django 모델의 파이썬 피클 객체
- Django 신호를 통해 모델 필드를 post_save로 채우는 방법은 무엇입니까?
- 장고 모델 데이터 필터
- postgresql - Modelobjectscreate ()를 사용할 때 장고 모델 save () 메소드가 호출되지 않습니다
- python - Django의 이미지 모델에서 홈 페이지로 이미지를 가져 오는 방법은 무엇입니까?
관련 질문
- python : django의 Queryset에 있는 ForeignKey에서 필드에 액세스하는 방법은 무엇입니까?
- django : 사용자가 프로젝트 팀의 일원인지 여부에 따라 필터링
- 사용자 정의 쿼리 세트를 구현하는 방법을 이해하기 위해 고군분투하는 Django 초보자
- django : /coordinator 'Coordinator' 개체의 AttributeError에 '에이전트' 속성이 없습니다.
- Django는 save() 메서드 후 Model의 char 필드에서 값을 잘라냅니다.
- python : Django 오류에서 ForeignKey 설정 : 일치하는 쿼리가 존재하지 않습니다
- python : 이전 날짜를 얻는 방법은 누구에게나 부탁할 수 있습니까? 사실 저는 헌혈 프로젝트를 하고 있습니다.
- python : django 4.0rc1 및 django-taggit "TypeError: get_extra_restriction() 누락된 1개의 필수 위치 인수: 'related_alias'" 태그별 필터링 시
- python : Django, Views에서 html 템플릿으로 변수를 전달할 수 없습니다.
- Django 업데이트 프로필
백엔드에 따라 다르지만 금액 합계를 최대 및 최소 타임 스탬프 사이의 일 수 차이로 나누려고합니다. Postgres에서는 단순히 두 날짜를 빼서 둘 사이의 일 수를 얻을 수 있습니다. MySQL에는 DateDiff라는 함수가 있는데 두 개의 날짜가 걸리고 그 사이의 일 수를 반환합니다.
물론 나에게 딱 맞는 것 같습니다. 물론 테스트하지는 않았습니다. 물론, 백엔드 인 경우 MySQLDateDiff를 사용하십시오.