&引用;选择“作为…”;使用Django中的相关模型数据

&引用;选择“作为…”;使用Django中的相关模型数据,django,django-models,django-views,django-queryset,Django,Django Models,Django Views,Django Queryset,我有一个应用程序,用户可以在其中选择自己的显示列。每个显示列都有一个指定的公式。要计算这个公式,我需要连接几个相关列(一对一关系)并计算值 模型如下(这只是一个示例模型,实际有100多个字段): 我试着做: ratios = {'growth':'quarter__sales_now / quarter__sales_previous'} CompanyCode.objects.extra(select=ratios) # raises "Unknown column 'quarter__sal

我有一个应用程序,用户可以在其中选择自己的显示列。每个显示列都有一个指定的公式。要计算这个公式,我需要连接几个相关列(一对一关系)并计算值

模型如下(这只是一个示例模型,实际有100多个字段):

我试着做:

ratios = {'growth':'quarter__sales_now / quarter__sales_previous'}
CompanyCode.objects.extra(select=ratios)
# raises "Unknown column 'quarter__sales_now' in 'field list'"
我还尝试使用原始查询:

query = ','.join(['round((%s),2) AS %s' % (formula, ratio_name)
    for ratio_name, formula in ratios.iteritems()])
companies = CompanyCode.objects.raw("""
    SELECT `backend_companycode`.`id`, %s
    FROM  `backend_companycode` 
    INNER JOIN  `backend_quarter` ON (  `backend_companycode`.`id` =  `backend_companyquarter`.`company_code_id` ) 
    """, [query])
#This just gives empty result

所以,请给我一点提示,如何更好地使用“extra”命令使用相关列。谢谢。

由于计算是在一个
季度
实例上进行的,那么在
选择
中需要在哪里进行计算呢?您可以在
季度
模型上定义一个
比率
方法/属性:

@property
def quarter(self):
    return self.sales_now / self.sales_previous

并在必要时调用它

,因为计算是在单个
季度
实例上进行的,那么需要在
选择
中执行吗?您可以在
季度
模型上定义一个
比率
方法/属性:

@property
def quarter(self):
    return self.sales_now / self.sales_previous

在必要的时候给它打电话好的,我找到了。在上述情况下,使用:

CompanyCode.objects.select_related('quarter').extra(select=ratios)
解决了这个问题

基本上,要通过“extra”访问任何相关的模型数据,我们只需要确保该模型已加入到我们的查询中。使用select_related,查询会自动加入上述模型


谢谢:)。

好的,我找到了。在上述情况下,使用:

CompanyCode.objects.select_related('quarter').extra(select=ratios)
解决了这个问题

基本上,要通过“extra”访问任何相关的模型数据,我们只需要确保该模型已加入到我们的查询中。使用select_related,查询会自动加入上述模型


谢谢:)。

到目前为止,Django文档说应该这样做

下面是一个没有额外()的查询:


到目前为止,Django文档说应该这样做

下面是一个没有额外()的查询:


对不起,以上只是一个例子。这里有100多个不同的比率和100个不同的字段。对不起,上面只是一个例子。有100多个不同的比率和100多个不同的字段。请注意,这可能不适用于django 1.7。更多信息:请注意,这可能不适用于django 1.7。有关更多信息: