Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 1, 2013 09:51:04

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

orm, сгруппированные записи

привет

есть двемодели:

class GroupName(models.Model):
    name = model.CharField()
class Type(models.Model):
    name = model.Charfield()
    group = model.ForeignKey(GroupName)

не могу понять как получит все Type, сгруппированные по GroupName

Офлайн

#2 Окт. 1, 2013 10:21:11

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

orm, сгруппированные записи

group = get_object_or_404(GroupName, name='some_name')
types = group.type_set.all()



Офлайн

#3 Окт. 1, 2013 10:24:26

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

orm, сгруппированные записи

это получится на ждую группу по запросу.
Вроде можно же как то получить одним запросом данные вида
{группа1: , группа2: {4,5,6}}

Офлайн

#4 Окт. 1, 2013 13:50:50

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

orm, сгруппированные записи

annotate и aggregate - это, ИМХО, сама мякотка дебилизма джанговского ОРМ,
я третий год с джангой работаю, и каждый раз эти конструкции пишу наугад.
Если записей не много, то проще выбрать всё и питонячьими методами сделать любую структуру которую хочется.



Офлайн

#5 Окт. 1, 2013 14:00:55

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

orm, сгруппированные записи

я вот тоже никак не вкурю эти два метода.
Через питон уже сделал.

Офлайн

#6 Окт. 1, 2013 14:40:17

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

orm, сгруппированные записи

как вариант: extra + тег regroup



Офлайн

#7 Окт. 1, 2013 14:54:35

magnet85
От:
Зарегистрирован: 2009-04-13
Сообщения: 91
Репутация: +  2  -
Профиль   Отправить e-mail  

orm, сгруппированные записи

Type.objects.values('group').annotate(gcount=Count('group'))



Офлайн

#8 Окт. 1, 2013 18:57:40

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

orm, сгруппированные записи

magnet85
Type.objects.values('group').annotate(gcount=Count('group'))
А ТС не говорил, что ему нужно количество записей, он говорил совсем не это, прочитайте еще раз, пожалуйста.



Офлайн

#9 Окт. 1, 2013 19:06:40

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

orm, сгруппированные записи

Стоп! Ильнур, а почему “это получится на ждую группу по запросу”?
С какого то перепугу?



Офлайн

#10 Окт. 2, 2013 06:50:44

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

orm, сгруппированные записи

plusplus
group = get_object_or_404(GroupName, name='some_name') # получили группу
types = group.type_set.all() # получили типы группы
И так для всех групп.
Разве нет?

Отредактировано ilnur (Окт. 2, 2013 06:50:59)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version