Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 30, 2014 13:31:02

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

Придумать ORM выборку

Имеются модели:
1) User (стандартное auth_user),
2) Профиль пользователя Profile
3) Данные какие-то Data

from django.contrib.auth.models import User
class Profile(models.Model):
    login = models.ForeignKey(User, unique=True)
    first_name = models.CharField(u'First name',max_length=200)
    middle_name = models.CharField(u'Middle name',max_length=200)
    def __unicode__(self):
        return '%s %s ' % (self.first_name,  self.middle_name)
class Data(models.Model):
    login =  models.ForeignKey(User)
    f = models.PositiveIntegerField(u'f', default=2)
    def __unicode__(self):
        return str(self.f)

например, мне нужно выбрать данные, в которых f=4 и 10, все просто:
In [14]: Data.objects.filter(f__in=[4,10]).values('login','f')
Out[14]: [{'login': 3L, 'f': 10L}, {'login': 2L, 'f': 4L}]
но при этом мне нужны не логины пользователя, а их имена-отчества:
In [12]: User.objects.all()
Out[12]: [<User: ivan>, <User: user1>, <User: user2>]
In [13]: Profile.objects.all()
Out[13]: [<Profile: Марья  Ивановна >, <Profile: Сергей  Сергеевич >]

Офлайн

#2 Июнь 30, 2014 13:36:07

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

Придумать ORM выборку

Data.objects.filter(f__in=[4,10]).values('login__firstname','login__middle_name')



Офлайн

#3 Июнь 30, 2014 13:48:54

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

Придумать ORM выборку

FishHook
Data.objects.filter(f__in.values('login__firstname','login__middle_name')


Решено!
 Data.objects.filter(f__in=[4,10]).values('f','login__profile__first_name','login__profile__middle_name')

Отредактировано django2014 (Июнь 30, 2014 13:58:53)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version