django coalesce返回数据类型

时间:2014-04-21 06:56:27

标签: python django coalesce

coalesce如何确定属性的返回数据类型?

使用

self.projects(
                select={"priority": "COALESCE(bm_rank, sales_rank, created_at)",

                },
                order_by=["priority"])

它将我的浮动字段改为unicode字符串。我想优先获得浮点字段。

修改

bm_rank = models.FloatField("Bizman Rank", max_length=10, blank=True, null=True)    
sales_rank = models.FloatField("Sales Rank", max_length=10, blank=True, null=True)
created_at = models.DateTimeField("Date Submitted", auto_now_add=True) 

1 个答案:

答案 0 :(得分:1)

您正在尝试的是合并不同数据类型的列。你还没有指定你的实际数据库引擎,但我可以想象这种操作只有两个合理的结果:

  • 抛出错误,这不是你的情况
  • 投两个列'如果存在这样的祖先,则为共同祖先的数据类型,否则为字符串类型

在您的情况下看起来是第二种选择。

如果您尝试按bm_rank订购,然后按sales_rank订购created_at,那么您实际上可以使用order_by完成合并,例如:

self.projects(order_by=["bm_rank", "sales_rank", "created_at"])