我有以下型号:
class Product(models.Model):
"""
Basic product
"""
name = models.CharField(max_length=100, db_column='name', unique=True)
url = models.SlugField(max_length=100, db_column="url", unique=True, db_index=True)
description = HTMLField(db_column='description')
category = models.ForeignKey(Category, db_column='category', related_name='products')
class FirstObject(Product):
pass
class FirstProduct(models.Model):
product = models.ForeignKey(FirstObject, db_column='product')
color = models.ForeignKey(Color, db_index=True, db_column='color')
class SecondObject(Product):
pass
class SecondProduct(models.Model):
product = models.ForeignKey(SecondObject, db_column='product')
diameter = models.PositiveSmallIntegerField(db_column='diameter')
换句话说,我有两种不同类型的产品(具有不同的参数)。
我想为特定类别(类别中只能是一种产品,我知道是什么)选择具有适当参数的所有产品。
如何有效地完成这项工作?
如果我写 Category.objects.get(id=id).products.all() 然后使用相关的管理器来获取特定产品的参数,这是否意味着每个产品都会命中数据库?
第二种方法是在一个查询中获取所有产品,然后获取所有参数。然后将它们分组到列表/字典中。
什么方法是最好的?或者也许还有另一种方法?
谢谢你。