【问题标题】:Django ORM multiple table data fetchingDjango ORM 多表数据获取
【发布时间】:2018-09-25 19:57:01
【问题描述】:

我也是 python 和 Django 的新手。我正在尝试使用 Django ORM 从数据库中获取数据,但我无法做到这一点。我的数据库有三个表:USER、INVESTMENT_NAME 和 WALLET。 user 表中的列是 id(主键)和 name,invest_name 表中的列是 id(主键)和 name,钱包表有 user_id(外键引用用户表中的 id),inv_id(外键引用 id 中的 Investment_name表)、日期、数量、金额和当前价格。 我无法使用 DJANGO ORM 获取显示用户名、投资名称、日期、数量、金额、当前价格的数据,因为我不知道如何处理多个表格。

有什么建议吗?

【问题讨论】:

标签: python django django-orm


【解决方案1】:

对 Wallet 表执行 Django ORM 查询。由于此表中的其他两个表都有外键引用,因此您可以使用 getter 访问实体。例如 -

w = Wallet.objects.all()
w[0].user.name  # This is the username
w[0].investment.name  # This is the investment name
w[0].date  # This is the wallet date

使用 Django 的官方文档可以更深入地了解 orm 查询以及如何优化它。

【讨论】:

  • 我有一个问题。为什么要像 w[0] 所代表的那样使用 w[0]?
  • 上述查询返回一个钱包对象的查询集。为了更好地理解,我从中提取了第一个元素,并向您展示了如何访问其余的模型属性。
【解决方案2】:

你应该使用双下划线来获取表的ForeignKey(一对多)关系字段和related_name(默认为field_name_set)来访问多对一(引用表的ForeignKey ) 对象。有文档:Lookups that span relationships

使用select_relatedprefetch_related 对性能也有好处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-22
    • 2021-02-26
    • 2020-06-14
    • 2021-10-08
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 2018-10-25
    相关资源
    最近更新 更多