#django #orm #django-views #group-concat
#django #orm #django-представления #объединение групп
Вопрос:
У меня есть модель
class Project(models.Model):
project = models.CharField(max_length=255, blank=True, null= True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
start_time = models.TimeField()
end_time = models.TimeField()
start_date = models.DateField()
Это мой запрос для извлечения данных
qs = Project.objects.values('project').annotate(
total_hours=Sum((F('end_time') - F('start_time'))), start_date =F('start_date'),).distinct()
for i in qs:
print(i)
Теперь то, что я получаю, это
{'project': '1', 'total_hours': Decimal('2.0000'), 'start_date': datetime.date(2020, 8, 1)}
{'project': '3', 'total_hours': Decimal('1.0000'), 'start_date': datetime.date(2020, 8, 1)}
{'project': '1', 'total_hours': Decimal('1.0000'), 'start_date': datetime.date(2020, 8, 2)}
Здесь, если проект 1 выходит на разные даты…. Как исключить второе добавление как единый объект
Итак, я пытаюсь использовать GROUP_CONCAT
Это код
class GROUP_CONCAT(Func):
function = 'GROUP_CONCAT'
template = '%(function)s(%(expressions)s)'
output_field = DateField()
Но я не уверен, как я могу использовать это с запросом Django ORM
Комментарии:
1. что произойдет, если вы удалите distinct из конца qs?
2. Я пытаюсь удалить дублирующийся элемент….. Даже если я не передаю distinct, он вернет тот же набор запросов