我的数据库具有以下架构:
class Product(models.Model):
pass
class Tag(models.Model):
product = models.ForeignKey(Product)
attr1 = models.CharField()
attr2 = models.CharField()
attr3 = models.CharField()
class AlternatePartNumber(models.Model):
product = models.ForeignKey(Product)
换句话说,aProduct
有许多Tag
s,aProduct
有许多AlternatePartNumber
s。Tag
s是Product
的属性集合。
给定一个Tag
中的三个属性,我想选择匹配的相关Product
s(可以是多个),以及每个产品的所有AlternatePartNumber
。
目前我这样做:
# views.py
results = Tag.objects.
filter(attr1=attr1).
filter(attr2=attr2).
filter(attr3=attr3)
# a template
{% for result in results %}
{% for alternate in result.product.alternatepartnumber_set.all %}
{{ alternate.property }}
{% endfor %}
{% endfor %}
这可以运行数千个查询,具体取决于匹配的数量。有没有一个好的方法来优化这个?我试着使用Tag.objects.select_related().filter...
这对一些人有帮助,但效果不够。
目前没有回答
相关问题 更多 >
编程相关推荐