【发布时间】:2019-12-07 23:14:27
【问题描述】:
我有两个模型类别和产品
class Category(models.Model):
name = models.CharField(max_length=200,
db_index=True)
slug = models.SlugField(max_length=200,
unique=True,)
description = models.CharField(max_length=50,
blank=True)
class Product(models.Model):
category = models.ForeignKey(Category,
related_name='products',
on_delete=models.CASCADE)
name = models.CharField(max_length=200,
db_index=True)
description = models.TextField(blank=True)
slug = models.SlugField(max_length=200, db_index=True)
price = models.DecimalField(max_digits=10, decimal_places=2)
available = models.BooleanField(default=True)
featured = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
想要的行为是返回所有类别,每个类别应包含 10 个产品
我尝试在不限制产品返回对象的情况下返回所有类别,然后我在模板中使用了切片过滤器,但我不确定这是否对大规模有效,我不确定 Django 是否会延迟加载产品. 现在的视图如下
def product_list(request):
featured_products = Product.objects.filter(featured=True).all()
categories = Category.objects.all()
return render(request,
template_name='home/home.html',
context={'categories': categories,
'featured_products': featured_products})
使用Category.objects.all()查询类别时我使用的方式是有效的还是应该限制产品?
【问题讨论】:
-
你能分享你模型的相关部分吗?
-
另外,如果你能分享一下你是如何尝试的,我的意思是,你的
views.py -
我更新了问题。
标签: python django django-models orm django-orm