我目前正在使用 Django,我的模型是这样的。
class City(models.Model):
name = models.CharField(max_length=255, primary_key=True)
url = models.URLField()
class Paper(models.Model):
city = models.ForeignKey(City)
name = models.CharField(max_length=255)
price = models.IntegerField()
class Article(models.Model):
paper = models.ForeignKey(Paper)
name = models.CharField(max_length=255)
我试图通过过滤城市名称和纸张的价格来获取一个城市对象、几个纸张对象和几个文章对象。
要搜索 City 表,我可以这样做:
cities = City.objects.get(pk='Toronto')
要获取 Paper 对象:
papers = Paper.objects.filter(city=cities, price < 5)
或者我什至可以将两者结合起来:
papers = cities.paper_set.filter(city=cities, price < 5)
(这样会更有效率吗?)
问题是找到一种有效的方法来从上述“论文”中获取所有文章。
我不能使用papers.article_set,因为papers 是一个QuerySet。如果我尝试使用循环,它可能会为每个纸质对象进行一次查询,对吧?
仅供参考,City 表有 1000 列,每个 City 有 1-1000 个 Paper 对象,每个 Paper 对象大约有 10 个 Article 对象。
任何帮助将不胜感激。
谢谢你。
编辑:假设我有一个城市查询集(上图),有没有办法在单个查询中获取所有文章对象?