Django 获取带有关系的\u对象\u或\u 404

Django 获取带有关系的\u对象\u或\u 404,django,django-queryset,Django,Django Queryset,我想这一定是可能的判断,但我似乎无法计算出语法。我需要通过author外键获取带有picture字段的blog对象 get_object_或_404是否可能实现这一点,如果可能,如何实现 #models.py class Blog(models.Model): author = models.ForeignKey(MyUser) #author class MyUser(AbstractUser): picture = models.ImageField() blog = g

我想这一定是可能的判断,但我似乎无法计算出语法。我需要通过author外键获取带有picture字段的blog对象

get_object_或_404是否可能实现这一点,如果可能,如何实现

#models.py
class Blog(models.Model):
    author = models.ForeignKey(MyUser)

#author
class MyUser(AbstractUser):
    picture = models.ImageField()

blog = get_object_or_404(Blog, pk=blog_id)

您想要的查询是这样的(来自):

然后您的查询是:

b = Book.objects.select_related('author__hometown').get(id=4)
p = b.author         # Doesn't hit the database.
c = p.hometown       # Doesn't hit the database.

b = Book.objects.get(id=4) # No select_related() in this example.
p = b.author         # Hits the database.
c = p.hometown       # Hits the database.
除非是在您的情况下,否则您的查询将是:
Picture.objects。选择相关('author\u blog')。获取(Picture\u name='somefilename.jpg')


你是说我想要与图片名“somefilename.jpg”相关的图片(当你在看的时候,还有作者和他们的博客)。至少如果我已经理解了你的问题和数据库结构的话。

正如Pureferret在 你可以用下面的方法来做

blog = Blog.objects.get(pk=blog_id)
author = blog.author
如果您想在模板中显示该图像,只需使用

{{ auther.picture.url }}

不清楚你在问什么。听起来你的意思是
get\u object\u或\u 404(Blog,author\u picture='somefilename.jpg')
,但这没有多大意义。你的Blog对象可以访问作者和个人资料。blog.author.picture应该会生成您的结果,尽管它会引起查询。好的,我理解。所以在一个查询中,我只想通过id获得博客,还有作者的照片。我想这在get_object_或_404中是不可能的?这似乎是可能的。这是两次数据库点击,不是吗?这肯定是很久以前的事了,虽然我很感激没有很好地解释它,但似乎@victor chris cabral的回答是正确的,这里是-@rix绝对正确,但回答总是比评论好(评论更容易消失)。这也应该是一个具体的例子,对于任何其他来到这里的人来说。
{{ auther.picture.url }}