Django:如何从与ForeignKey连接的不同模型中加入QuerySet?

时间:2015-01-14 15:15:17

标签: django join django-models foreign-keys django-select-related

我想在一个QuerySet中将来自两个不同模型的属性(它们与ForeignKey连接)组合在一起以在表中显示它们。我尝试使用select_related连接它们,但是,模型B中的属性不会出现在我的QuerySet中,也不能在我的表中显示它。我究竟做错了什么?如何添加属性" name"从模型A到我的QuerySet?你能帮我么?提前致谢

view.py

A.objects.select_related('b_id').filter(a_id__in='abcde')

models.py

class B(models.Model):        
    b_id = models.CharField(max_length=20, primary_key=True, unique=True)
    name = models.CharField(max_length=80)
    size = models.CharField(max_length=10)

class A(models.Model):
    a_id = models.CharField(max_length=20, primary_key=True, unique=True)
    text = models.CharField(max_length=254)
    b_id = models.ForeignKey(B)

html的

{% for entry in set %}
 <tr> <td> {{entry.a_id}} </td>
      <td> {{entry.text}} </td>
      <td> {{entry.name}} </td></tr>

2 个答案:

答案 0 :(得分:0)

select_related()没有合并两个模型的字段。您应该使用此代码显示外键name的{​​{1}}属性:

b_id

答案 1 :(得分:0)

根据我的理解,您需要通过外键显示与A类相关的B模型实例。

你的views.py:

    A.objects.filter(a_id__in='abcde')

你的HTML:

    {% for entry in set %}
        <tr> <td> {{entry.a_id}} </td>
        <td> {{entry.b_id.text}} </td>
        <td> {{entry.b_id.name}} </td></tr>