【问题标题】:Calculated field in django queryset valuesdjango 查询集值中的计算字段
【发布时间】:2012-01-26 19:14:54
【问题描述】:

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

请告诉我如何解决这个问题?

【问题讨论】:

    标签: django


    【解决方案1】:

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

    您可以通过在带有 SQL 的 QuerySet 上使用 extra 方法来收集额外信息。 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()] 
    

    【讨论】:

      猜你喜欢
      • 2018-10-11
      • 2010-12-11
      • 1970-01-01
      • 2018-08-08
      • 2020-08-21
      • 1970-01-01
      • 2019-07-06
      • 2013-06-11
      • 1970-01-01
      相关资源
      最近更新 更多