2014-03-12 45 views
2

我想這一定是可以通過這個post來判斷,但我似乎無法解決語法問題。我需要通過作者外鍵獲取帶有圖片字段的博客對象。get_object_or_404與關係

這是可能的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) 
+0

目前尚不清楚你在問什麼。聽起來你的意思是'get_object_or_404(Blog,author__picture ='somefilename.jpg')',但這沒有多大意義。 – lanzz

+0

您的博客對象將有權訪問作者和個人資料。 blog.author.picture應該會產生你的結果,儘管它會導致查詢。 –

+0

好吧,我明白了。所以在1個查詢中,我只想通過id獲取博客,還有作者的照片。我想這不可能與get_object_or_404? – rix

回答

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')

你的意思是我想要這張照片(而當你在它的時候,Auth或他們的博客)與圖片名稱'somefilename.jpg'相關。至少如果我已經理解你的問題和數據庫結構了。

+0

嗯,這當然是很久以前,雖然我很欣賞它沒有得到很好的解釋,似乎@維克托克里斯卡布拉爾有正確的迴應這是在這裏 - http://stackoverflow.com/questions/6624530/ django-using-select-related-and-get-object-or-404-together – rix

+0

@rix絕對,但答案總是比評論更好(評論更容易消失)。對於其他任何來到這裏的人來說,這也應該是一個具體的例子。 – Pureferret