Django查询集dict运行缓慢

时间:2015-03-22 20:08:51

标签: python django postgresql dictionary django-queryset

我在Django中查询对象,然后为这些对象创建字典理解。当我进行速度测试时,该功能需要.9秒,即使它只查询104个对象。什么是代码这么久?我正在运行DEBUG = False并尝试使用values_list()。另外,我正在使用postgresql。

@speed_test
def find_user_fc_ids(user_id=1):
    try:
        flavor_compounds = UserFlavorCompound.objects.filter(user_id__in=user_id)
        return {flavor.flavor_id: flavor.score for flavor in flavor_compounds}
    except UserFlavorCompound.DoesNotExist:
        flavor_compounds = UserFlavorCompound.objects.filter(user_id__in=1)
        return {flavor.flavor_id: flavor.score for flavor in flavor_compounds}

1 个答案:

答案 0 :(得分:0)

也许你会结帐你的模特。如果您使用ForeignKey,您可能会使用select_related查询它们。或者,如果您使用的是ManyToMany字段,则可以使用预取相关来调用它们。

我猜这些优化可以很好地改善您的表现。

您可以从官方django文档中查看:prefetch_relatedselect_related