Я пытаюсь объединить два набора запросов в Django с разными значениями ключа, но из той же модели, есть ли способ сделать это?
Вот мой код:
models.py
class CustomerInformation(models.Model):
status = (
('lead', 'Lead'),
('client', 'Client'),
)
customer_id = models.AutoField(primary_key=True)
customer_name = models.CharField(max_length=100)
status = models.CharField(max_length=100, choices=status, default='lead')
conversion_date = models.DateField(null=True, blank=True)
created_date = models.DateField(default=timezone.localdate)
def save(self, *args, **kwargs):
if self.customer_id:
if self.status != CustomerInformation.objects.get(customer_id=self.customer_id).status and self.status == 'client':
self.conversion_date = timezone.now()
elif self.status != CustomerInformation.objects.get(customer_id=self.customer_id).status and self.status == 'lead':
self.conversion_date = None
super(CustomerInformation, self).save(*args, **kwargs)
вот моя фильтрация
start = date.today() + relativedelta(days=-30)
client_qs = CustomerInformation.objects.filter(conversion_date__gte=start).values(date=F('conversion_date')).annotate(client_count=Count('date'))
lead_qs = CustomerInformation.objects.filter(created_date__gte=start).values(date=F('created_date')).annotate(lead_count=Count('date'))
По сути, я пытаюсь получить количество экземпляров CustomerInformation, созданных за последние 30 дней (путем аннотирования количество поля created_date). Кроме того, я хочу получить количество экземпляров CustomerInformation, которые преобразовались в статус «клиент» в течение последних 30 дней (путем аннотирования счетчика поля «conversion_date»). Есть ли способ сделать это и получить их в одном наборе запросов, желательно с одним полем даты?
Например, мой желаемый результат будет
[ {'date': '170620', 'lead_count': 2, 'client_count': 1}, {'date': '180620', 'lead_count': 1, 'client_count': 0 }, ... ]
Любая помощь приветствуется, всем спасибо!