如何检查django是否已从数据库执行查询和检索数据。
例如,我有产品和类别模型,
if product.category:
在这种情况下,如果django没有类别数据,它会执行查询并从db中检索类别数据。
我如何检查它是否已有数据?
答案 0 :(得分:0)
您可以将原始字段而不是外键检查到另一个模型,如下所示:
如果是product.category_id:
如果有查询集,您可以使用sql连接在一个请求中与category
qs一起检索products
:
https://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)
它尝试使用密钥从缓存中获取对象,如果它不存在,则将其设置为第二个参数,并使其在第三个参数中的值到期。