Django,查询过滤而不是迭代

时间:2016-12-20 09:28:20

标签: django django-queryset

所以我在拍卖会上有这个数据库(WoW),我每小时一次表格更新。简化它看起来像这样:

class Auction(models.Model):
    auction_id = models.IntegerField()
    item_id = models.IntegerField()
    owner = models.CharField()
    buyout = models.IntegerField() 

我得到的数据是一个字典列表,如下所示:

new_auctions = [
    { 'auction_id' : <int>, 'item_id' : <int>, 
      'owner' : <string>  , 'buyout'  : <int>
    },
    # more auctions
]

现在我想检查拍卖是否已经重新开始 现在我想看看是否:

  • 拍卖已经不见了
  • 同一所有者为同一项目进行了另一次拍卖
  • 价格低于前拍卖

然后我会假设拍卖没有出售但是重新开始。

我目前的解决方案是通过让所有已经消失的拍卖开始的:

auction_ids = map(lambda d: d['auction_id'], new_auctions)
dead_auctions = Auction.objects.exclude(auction_id__in=auction_ids)

所以现在我想我可以迭代dead_auctions中的每一次拍卖,看看同一所有者是否以较低的价格在同一所有者的new_auctions中进行拍卖。

我有这种感觉,它不够优雅,可能效率低下,因为

  • 刚刚完成算法课程和“它是O(n²),和泡泡排序一样糟糕!”
  • 一位朋友告诉我“你永远不应该遍历数据库,只能进行查询”
  • 我对Django(/数据库)还不够好知道是否有一个可以替代它的智能​​查询。

0 个答案:

没有答案