检查django是否已经执行查询并从数据库中获取数据

时间:2016-03-17 06:20:04

标签: django model

如何检查django是否已从数据库执行查询和检索数据。

例如,我有产品和类别模型,

if product.category:

在这种情况下,如果django没有类别数据,它会执行查询并从db中检索类别数据。

我如何检查它是否已有数据?

2 个答案:

答案 0 :(得分:0)

您可以将原始字段而不是外键检查到另一个模型,如下所示:

  

如果是product.category_id:

如果有查询集,您可以使用sql连接在一个请求中与category qs一起检索productshttps://docs.djangoproject.com/en/1.9/ref/models/querysets/#select-related

或者在没有连接的情况下预取此字段: https://docs.djangoproject.com/en/1.9/ref/models/querysets/#prefetch-related

答案 1 :(得分:0)

如果你想避免不必要的取件,你应该use a cache

from django.core.cache import cache
from .models import Product

def someview(request, pk=None):
    product = cache.get_or_set(pk, Product.objects.get(pk=pk), 100)
    # do your normal stuff with product

get_or_set方法的工作原理如下:

get_or_set(key, new_value_to_set, expiry_in_seconds)

它尝试使用密钥从缓存中获取对象,如果它不存在,则将其设置为第二个参数,并使其在第三个参数中的值到期。