Форум сайта python.su
Добрый день! Ув. знатоки, прошу помочь с проблемой.
Структура моделей:
class Person(models.Model): name = models.CharField() class Plan(models.Model): person = models.ForeignKey(Person, related_name='persons_plan') month = models.DateTimeField() # январь, февраль, март...(одна запись в месяц) val = models.IntergerField() class Fact(models.Model): person = models.ForeignKey(Person, related_name='persons_fact') month = models.DateTimeField() # январь, февраль, март...(одна запись в месяц) val = models.IntergerField()
month_period=[1,2,3]
Отредактировано scurramalum (Апрель 17, 2016 16:12:23)
Офлайн
Вопрос, а зачем месяц сделан DateTimeField?
Это же число от 1 до 12.
Ну а по сути вопроса вам нужна группировка, гуглить Django annotate и Django aggregate.
Офлайн
DateTimeField сделано для того, что есть другой функционал, где требуется именно дата и время (дата постановки плана может быть выставлена в течении всего месяца)
Вот прочитал эти функции и никак не пойму как их здесь использовать. По сути получить значение одного месяца я могу легко, но как выстроить, чтобы у Person было свойство со значением других месяцев, никак не доходит…притом что понимаю, на уровне SQL здесь достаточно не сложный запрос (на сколько я могу представить), но интересно как с помощью ORM получить такой результат….очень интересно!
Офлайн
Спасибо! нашел решение! Действительно через функции агрегации. Но еще используя конструкции When(), Case() в запросе агрегации.
Офлайн