Вычисляемое поле в значениях набора запросов django - PullRequest
1 голос
/ 23 декабря 2011

У меня есть модель клиента и мне нужно получить адрес регистрации в VALUES ()

class Client(models.Model)
    addresses       = generic.GenericRelation(Addres, null=True, blank=True )        
    name            =models.CharField(max_length=50)
    tel             =models.CharField(max_length=20)
...

def get_addres(self):        
        ''' Returns registration addres
        '''

Я хочу сделать что-то вроде этого

list = Client.objects.all().values( 'name', 'tel', 'get_addres')

Скажите, пожалуйста, как я могу решить эту проблему?

1 Ответ

3 голосов
/ 24 декабря 2011

Вы не можете запрашивать значения Python с помощью ORM в django (он говорит с базой данных SQL, а не с моделями django).

Вы можете собрать дополнительную информацию, используя метод extra на QuerySet с SQL. https://docs.djangoproject.com/en/dev/ref/models/querysets/#extra

Я бы предпочел попытаться построить это на Python, прежде чем прибегать к SQL. Если только вы не используете values() специально для решения проблем с памятью, я просто сгенерирую необходимые вам данные с помощью python.

list = [{'name': x.name, 'tel': x.tel, 'address': x.get_address()} 
    for x in Client.objects.all()] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...