Уведомления

Группа в Telegram: @pythonsu

#1 Июль 9, 2014 23:28:20

django2014
Зарегистрирован: 2014-06-29
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

группировка в шаблоне по двум полям

В шаблоне выполняю группировку с помощью regroup. Но, перегруппировака нужна по двум полям, например f1 и f2. Чтобы выполнить ее, пришлось в модель добавить поле f12, которое заполняется методом save, вот так:

class MyModel(Model):
    f1 = ...
    f2 = ...
   def save(self, *args, **kwargs):
       f12 = f1 + f2
       ...

Уважаемые форумчане, является ли такое решение нормальным? Может есть какие-то трюки, к-е я проглядел в интернете или документации.

Спасибо!

Офлайн

#2 Июль 10, 2014 05:40:47

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

группировка в шаблоне по двум полям

Если стандартный тег не удовлетворяет потребностям - пишите свой. Вот это нормальное решение, ИМХО.



Офлайн

#3 Июль 12, 2014 10:05:11

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

группировка в шаблоне по двум полям

Добавьте просто property в модель



Офлайн

#4 Июль 12, 2014 22:33:24

django2014
Зарегистрирован: 2014-06-29
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

группировка в шаблоне по двум полям

svas
Добавьте просто property в модель

пробовал и отказался по следующей причине. При выполнении выборки из БД и указании полей в objects.filter(…).values('f12', … ) свойство не воспринимается как поле модели и наблюдается ошибка
Cannot resolve keyword 'f12' into field
Т.е. при генерации выборки, я так понимаю, требуется настоящее поле в таблице БД.

Свойство оформил так:
def _get_f12(self):
        return '%s %s'' % (self.f1, self.f2)
f12 = property(_get_f12) 

Офлайн

#5 Июль 17, 2014 10:53:42

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

группировка в шаблоне по двум полям

Дак не надо objects.filter(…).values('f12', …). Если без values, у вас создадутся экземпляры модели, у которых будет f12. Или нужно использовать именно values?



Отредактировано svas (Июль 17, 2014 10:54:35)

Офлайн

#6 Июль 18, 2014 16:34:10

django2014
Зарегистрирован: 2014-06-29
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

группировка в шаблоне по двум полям

svas
Дак не надо objects.filter(…).values('f12', …). Если без values, у вас создадутся экземпляры модели, у которых будет f12. Или нужно использовать именно values?

я с помощью values и “__” добираюсь до полей из другой таблицы.

Записи f1, f2 делает конкретный пользователь и БД хранит id пользователя из стандартной таблицы auth_user. Имеется связь между auth_user и profile и нужно излечь данные принадлежащие пользователю из profile: c value получается просто, например, userid__profile__middle_name. По другому как это сделать - не знаю.

Офлайн

#7 Июль 20, 2014 23:11:50

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

группировка в шаблоне по двум полям

Без values

User.objects.filter(..).\
 prefetch_related('profile').\ # Выбрать сразу и профили, у вас возможно по-другому называется
 only(...) # Если не нужно выбирать все данные
Ну и потом использовать f1, f2, f12



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version