我正在努力为我的项目获取正确的查询。这是一个示例或我的模型:
from django.db import models
class Pictures(models.Model):
name = models.CharField(max_length=100)
bild = models.FileField(upload_to='article_pictures/')
articel = models.ForeignKey('articles', on_delete=models.CASCADE)
def __str__(self):
return self.name
class Articles(models.Model):
name = models.CharField(max_length=100)
text = models.TextField(max_length=2000)
published = models.BooleanField(default=False)
def __str__(self):
return self.name
我如何从手工艺品课中获取已发布的手工艺品,包括图片(如果有一个或多个)?
谢谢您的帮助
答案 0 :(得分:1)
我认为对此没有任何确切的查询,但是您可以使用prefetch_related从数据库中预加载数据。例如:
articles = Artikles.objects.filter(published=True).prefetch_related('pictures_set')
for article in articles:
article.pictures_set.all() # will not hit database
答案 1 :(得分:1)
所有已发表的文章
Articles.objects.filter(published=True)
一篇发表的文章(示例):
article = Articles.objects.filter(published=True).first()
# and it's pictures
for picture in article.pictures_set.all():
print(picture)
答案 2 :(得分:0)
注意:模型具有单数名称,因此您应将
Articles
重命名为Article
,将Pictures
重命名为{{1} }。
文章Picture
的相关Picture
可以通过以下方式获得:
article
这是一个包含所有相关图片的查询集。
我们可以获取已发布的my_article.picture_set.all()
,然后通过以下两个额外的查询来获取相关的Article
:
Picture
因此,在模板中,您可以像这样渲染它:
articles = Article.objects.filter(published=True).prefetch_related('picture_set')