django queryset值中的计算字段

时间:2011-12-23 12:05:08

标签: django

我有一个模型客户端,需要在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 个答案:

答案 0 :(得分:3)

你不能用django的ORM来查询python值(它对数据库说SQL,而不是django模型)。

您可以使用SQL extra上的QuerySet方法收集额外信息。 https://docs.djangoproject.com/en/dev/ref/models/querysets/#extra

在尝试使用SQL之前,我更愿意尝试在Python中构建它。除非您使用values()的原因是专门解决实际的内存问题,否则我只需使用python生成所需的数据。

list = [{'name': x.name, 'tel': x.tel, 'address': x.get_address()} 
    for x in Client.objects.all()]