Django查询使用另一个查询中Count注释的结果

时间:2018-10-05 16:22:49

标签: django django-models django-orm

我已经为此苦苦挣扎了好几天了。我有一个数据库表,其中包含时间戳记和股票交易信息,包括交易的公司交易代码和价值。每个时间戳代表一天。这是数据模型:

class OwnershipDocument(models.Model):
    transactionTimeStamp = models.IntegerField(null=True, blank=True)
    issuerTradingSymbol = models.CharField(max_length=50, null=True, blank=True)
    valueTransacted = models.FloatField(null=True, blank=True)

我想进行一个django查询,该查询将只选择那些公司的一个时间戳记中有多个交易的股票交易。我想出一个查询来获取每个时间戳的交易计数:

query = OwnershipDocument.objects.filter(issuerTradingSymbol__iexact='ED')

query1 = query.values(
    'transactionTimeStamp'
    ).annotate(count = Count('transactionTimeStamp')).order_by('transactionTimeStamp')

我认为我需要以某种方式将query1与子查询一起使用,但是我不确定如何做到这一点。

我已经使用原始SQL完成了我想要的工作:

query = OwnershipDocument.objects.raw('''
    SELECT * FROM insider_app_ownershipdocument
    WHERE "valueTransacted" > 1 AND
    ("issuerTradingSymbol", "transactionTimeStamp") IN
          (  SELECT "issuerTradingSymbol", "transactionTimeStamp"
               FROM insider_app_ownershipdocument
           GROUP BY "issuerTradingSymbol", "transactionTimeStamp"
             HAVING COUNT (*) > 5)
             order by "transactionTimeStamp" DESC, "issuerTradingSymbol"
    ''')

但是我需要将其链接到以前的django查询对象,显然我无法使用原始SQL。那么如何将原始sql转换为Django查询呢?

0 个答案:

没有答案