get_object_or_404有关系

时间:2014-03-12 17:14:46

标签: django django-queryset

我认为这必须可以通过post来判断,但我似乎无法解决语法问题。我需要通过作者外键获取带有图片字段的博客对象。

这是否可以使用get_object_or_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)

2 个答案:

答案 0 :(得分:0)

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

from django.db import models

class City(models.Model):
    # ...
    pass

class Person(models.Model):
    # ...
    hometown = models.ForeignKey(City)

class Book(models.Model):
    # ...
    author = models.ForeignKey(Person)

然后你的查询是:

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.select_related('author__blog').get(picture_name='somefilename.jpg')

你说我想要图片名称' somefilename.jpg'的图片(以及你的作品,作者和他们的博客)。至少如果我理解你的问题和数据库结构,那就是。

答案 1 :(得分:0)

如Pureferret在his answer中所建议 您可以按照以下方式进行操作,

blog = Blog.objects.get(pk=blog_id)
author = blog.author

如果要在模板中显示该图像,请使用

{{ auther.picture.url }}