合并通过公共模型

时间:2017-01-04 16:43:30

标签: django

假设我在Django中有两个模型,它们通过一个通用模型相互关联,如下例所示:

class ModelA(models.Model):
    f = models.IntegerField()


class ModelX(models.Model):
    a = models.ForeignKey(ModelA)
    x = models.FloatField()


class ModelY(models.Model):
    a = models.ForeignKey(ModelA)
    y = models.FloatField()

现在假设我想查询ModelX和ModelY并将两个查询集合并到一个查询集中,其引用等于ModelA。实现这一目标的最佳方法是什么?

我到目前为止所尝试的是使用一个模型构建字典,然后在迭代第二个模型时查找它,但我确定必须有更好的方法吗?

当我构建一个html表并循环遍历查询集时,我通常需要这样做。

m_x = ModelX.objects.all()
d = {}
for m in m_x:
    d[m.a] = m.x

m_y = ModelY.objects.all()
for m in m_y:
    m.x = d.get(m.a, 0)

然后我会在模板中使用它,如下所示:

<table>
    <tr>
        <th>F</th>
        <th>X</th>
        <th>Y</th>
    </tr>
    {% for item in m_y %}
        <tr>
            <td>{{ item.a.f }}</td>
            <td>{{ item.x }}</td>
            <td>{{ item.y }}</td>
        </tr>
    {% endfor %}
</table>

0 个答案:

没有答案