какой набор запросов требуется? - PullRequest
1 голос
/ 17 февраля 2011

У меня есть следующая модель:

PHONE_CHOICES = (
    ('home', 'Home'),
    ('home2', 'Home 2'),
    ('mobi', 'Mobile'),
    ('mobi2', 'Mobile 2'),
    ('work', 'Work'),
    ('work2', 'Work 2'),
)

class ClientPhone(models.Model):
    client = models.ForeignKey(Client, editable=False)
    created = models.DateTimeField(default=datetime.now, editable=False)
    created_by = models.ForeignKey(User,editable=False)
    phone_type = models.CharField(max_length=5, choices=PHONE_CHOICES)
    number = models.CharField(max_length=24)

Я знаю ClientPhone.objects.filter(client=i_clientKEY).latest('created') Получит мне последний номер телефона, введенный в БД, но я хочу иметь возможность получить последние номера телефонов для 'home', 'home2', 'mobi' и т.д ... (все) для клиента.

Как мне получить набор запросов для этого?

Ответы [ 2 ]

1 голос
/ 17 февраля 2011

latest () возвращает один объект запроса, а не список, поэтому вы получите последний тел. запись связанного лица.

Если вы хотите получить последний nmber для каждого phone_type, вы должны выполнить разные SQL-запросы, то есть вы должны написать разные запросы для каждого phone_type ...

@ Aldarund: использование phone_type__in помогает получить последнюю запись с phone_type одного из элементов списка (один с самым поздним временем создания.), Но не один результат для каждого элемента в списке

0 голосов
/ 17 февраля 2011

Просто добавьте еще один аргумент для фильтрации следующим образом: ClientPhone.objects.filter (клиент = i_clientKEY, PHONE_TYPE = 'дом'). Последняя ( 'создано')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...