2017-02-23 56 views
0

我想創建一個Plaque模型和Veteran(ForeignKey)模型的查詢集合到名爲queryset_list的組合查詢集中。從Model和ForeignKey創建Django Queryset

型號

class Plaque(models.Model): 
    created_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='plaques', default=1) 
    group = models.ForeignKey(Group, blank=True, null=True, verbose_name='Group Name') 
    veteran = models.ForeignKey(Veteran, blank=True, null=True) 
    ... 

查看

def plaque_list(request): 
    today = timezone.now().date() 
    plaques = Plaque.objects.all() 
    veterans = Plaque.objects.all() 
    queryset_list = plaques | veterans 
    # queryset_list = Plaque.objects.active().order_by('first_name') 
    ... 

回答

0

這不是我清楚你想從你的問題做什麼和你的視圖代碼混淆的事情進一步爲你分配結果爲Plaque.objects.all()兩個不同的變量,然後把它們放在一起。 Plaque模型上的ForeignKey對象將全部在查詢集中可用。您可以使用select_related,以確保你拉他們都回來了高效,就像這樣:

plaques = Plaque.objects.select_related("veteran").all() 
for p in plaques: 
    print p.veteran 

NB,該.all()不是絕對必要的,但我想弄清楚我用的是相同的查詢,你和簡單添加到它。

+0

我剛剛注意到,我將Plaques.object分配給了今天的頭部感冒患者。謝謝。 –

0

您應該可以使用select_related方法。

queryset_list = Plaque.objects.select_related('Veteran').all().order_by('first_name') 

詳細信息請見Django documentation