2015-09-21 35 views
1

我的模型作爲下方(MilestoneTicketDjango的select_related不返回外部表的數據

class Ticket(models.Model): 
    create_date = models.DateTimeField('date created') 
    project = models.ForeignKey(Project) 
    milestone = models.ForeignKey(Milestone) 
    title = models.CharField(max_length=200) 
    priority = models.IntegerField() 
    estimate = models.CharField(max_length=100) 

class Milestone(models.Model): 
    project = models.ForeignKey(Project) 
    title = models.CharField(max_length=200) 
    description = models.TextField() 
    budget = models.IntegerField() 

相關的,我想從Ticket模型中的所有數據以及相應的Milestone表數據(JOIN票務&之間里程碑) 我的查詢是

Ticket.objects.filter(project_id=10).select_related('milestone').values_list() 

但這只是從Ticket國防部獲得的所有數據埃爾。爲什麼Milestone模型的數據沒有返回?這裏有什麼問題?請幫助我在Django中新建

回答

1

使用select_related您正在緩存Milestone對象,它與當前的Ticket對象關聯,不檢索其數據。

你可以嘗試:

from django.db.models import F 

tickets = Ticket.objects.filter(project_id=10).select_related('milestone').annotate(m_title=F('milestone__title'), m_description=F('milestone__description'), ...) 

然後,在得到的查詢集的對象將有一個m_title屬性。

tickets[0].m_title 
+0

我怎樣才能得到列表數據?對於兩個表。它會返回兩個表中的所有數據 –

+1

那麼,您在票據中有一個QuerySet對象。您可以在末尾添加'.values_list()'並獲取包含註釋值的列表。 – Gocht

+0

它在shell中工作。請等待測試項目 –