2013-02-14 152 views
0

我想合併兩個鍵上的兩個查詢集。加入/合併兩個鍵上的兩個查詢集

class ModelA(models.Model) 
    text = models.CharField(max_length=10) 

class ModelB(models.Model) 
    value = models.CharField(max_length=10) 
    model_a = models.ForeignKey(ModelA) 
    additionalkey = models.CharField(max_length=10) 

假設我已經對所有MODELA對象一個查詢集和我需要從第二模型(ModelB),其具有一個ForeignKey關係到MODELA根據附加的密鑰相對應的條目。什麼是最快和最有效的方式來實現這一目標?

通過在所有條目上循環執行此操作,將爲ModelA-QuerySet中的每個條目創建數據庫。

我的想法是一次獲取所有ModelB對象,並將其與ForeignKey和additionalkey適用的完整ModelA集合合併/合併。

任何想法或提示任何人?

編輯:

好吧,更加精確。我已經有 ModelA的查詢集。畢竟,我想有一個查詢集,其中包含來自這兩個表中的信息的一個查詢集(或其他我可以在模板中迭代的其他東西)。

回答

0

我不知道我理解的問題,但也許:

ModelA.objects.all()過濾器(modelb__additionalkey = '富')

0

你可以使用PK的名單由你。 MODELA查詢集過濾modelB:

pk_list = model_a_queryset.values_list('pk', flat=True) 
ModelB.objects.filter(model_a__pk__in=pk_list) 

,或者你可以只用某種價值過濾ModelB得到的第一個查詢集:

ModelB.objects.filter(model_a__title="foo") 
0
modela = ModelA.objects.filter() 
modelb = ModelB.objects.filter() 

......................  

{% for a in modela %} 
    {{....}} 

    {% for b in a.modelb %} 
     {{....}} 
    {% endfor %} 
{% endfor %}