Я занимаюсь разработкой "Admin DashBoard" с Django 2.2
Я бы посчитал "Объекты" различных условий из одной таблицы и отправил бы их в шаблон.
Мой код приведен ниже..
# model
class User(models.Model):
uid = models.AutoField(primary_key=True)
status = models.IntegerField(blank=True, null=True)
created_at = models.DateTimeField(blank=True, null=True)
created_at_unix = models.CharField(max_length=100, blank=True, null=True)
country_code = models.IntegerField(blank=True, null=True)
recommender_id = models.ForeignKey('self', on_delete=models.SET_NULL ,blank=True, null=True, db_column='recommender_id')
is_agreement = models.PositiveIntegerField(blank=True, null=True)
delete_yn = models.CharField(max_length=1, default='n')
is_sms = models.PositiveIntegerField(blank=True, null=True)
is_email = models.PositiveIntegerField(blank=True, null=True)
is_push = models.PositiveIntegerField(blank=True, null=True)
def index(request):
# New User
user_lastweek = User.objects.filter(created_at__gte=last_monday, created_at__lte=last_sunday).count()
user_thisweek = User.objects.filter(created_at__gte=this_monday, created_at__lte=tomorrow).count()
user_variation = user_thisweek - user_lastweek
# User total
user_total_lastweek = User.objects.filter(created_at__lte=last_sunday).count()
user_total_thisweek = User.objects.filter(created_at__lte=tomorrow).count()
user_total_variation = user_total_thisweek - user_total_lastweek
context = {
'user_lastweek':user_lastweek,
...
}
return render(request, 'main/index.html', context)
Я написал только несколько из множества условий.
Но мой код вызывает дублирование запросов каждый раз.
Результат, который мне нужен, похож на..
1. user_lastweek : 114
2. user_thisweek : 98
3. user_total_lastweek : 1232
4. user_total_thisweek : 1330
Как эффективно отобразить шаблон только с одним запросом или с меньшим количеством запросов?