【问题标题】:Django OneToMany relationship using ForeignKey queryset使用外键查询集的 Django 一对多关系
【发布时间】:2019-06-12 10:44:11
【问题描述】:

我在 django 框架 OneToMany 关系模型中使用 ForeignKey。

我现在需要但我不知道该怎么做是为表中的任何 id 创建一个查询集 Order id 如何在表行中作为 fk 键,我想在 html 页面中显示。

例如,我想在 html 模板中显示如下内容:

id_order | id_line
1        |    2
2        | 3,4,8
10       |    7

这让我很困惑,因为我认为我们需要反转外键。

这是模型:

django.db import models

class Order(models.Model):
    order_name = models.CharField(max_length=254)

class Line(models.Model):
    f= models.ForeignKey(Order, blank=True, null=True,verbose_name='order')
    name = models.CharField(max_length=254)

    def __unicode__(self):
        return self.name

知道怎么做吗?

【问题讨论】:

    标签: python django database python-2.7


    【解决方案1】:

    我想在 Order 表数据中:

    id  order_name
    1   order 1
    2   order 2
    10  order 10
    

    表数据:

    id  name    f_id
    2   line 2  1
    3   line 3  2
    4   line 4  2
    7   line 1  10
    8   line 5  2
    

    然后我运行以下查询

    lines = Line.objects.select_related('order').values('f_id', 'id')
    

    它将返回以下结果:

    <QuerySet [{'f_id': 1, 'id': 2}, {'f_id': 2, 'id': 3}, {'f_id': 2, 'id': 4}, {'f_id': 2, 'id': 8}, {'f_id': 10, 'id': 7}]>
    

    select_related 返回一个 QuerySet,它将“遵循”外键关系,在执行查询时选择其他相关对象数据。

    更新: 在模板中

    {% for line in lines %}
        <p>{{ line.f_id.name }}</p>
    {% endfor %}
    

    【讨论】:

    • 如何在 html 模板中使用该查询?
    猜你喜欢
    • 2011-12-06
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 2018-11-26
    • 2015-10-30
    • 2016-06-10
    • 2020-04-20
    • 2014-07-14
    相关资源
    最近更新 更多