2017-02-23 65 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