【问题标题】:Difference between question_id and question.id in DJANGO (Python)DJANGO (Python) 中 question_id 和 question.id 的区别
【发布时间】:2020-10-03 15:20:49
【问题描述】:

我是一个完整的 Django 初学者。我在理解使用(.set 和 _set)方法、(.id 和 _id)方法以及类似的各种方法的概念时发现了一些困难。目前我指的是 Django Docs ->> https://docs.djangoproject.com/en/3.0/intro/ 有人帮助我理解这些概念,例如方法背后的原因是什么以及在哪里使用什么方法之王。 谢谢。

【问题讨论】:

  • foo.bar_id 将从foo 表中获取值,而foo.bar.id 将从bar 表中获取值

标签: python django methods web-deployment django-3.0


【解决方案1】:

举个例子,这是我的两张表:

所有者(名字,姓氏)

汽车(颜色、型号、车主 ID)

正如你在外键关系中看到的那样,django 在你的表 Car 中添加一个字段 owner_id,它会在其中放置这辆车的所有者的 id。

现在在您的代码中,如果您获得一个 Car 对象,它将包含以下内容:

color

model

owner_id

owner

您可以使用 car.owner_id(它只是一个整数)或 car.owner.id(它去查找对象所有者中的 id。

有什么区别: Django 是惰性的,这意味着如果你不使用它,它不会获取对象所有者。这意味着如果您在代码中没有任何时候执行 car.owner.whateveryouwant,那么您的对象汽车中将没有对象所有者。它避免了 Django 从数据库中获取它

我们什么时候使用其中一个: 如果您不使用对象 car 中的对象所有者而只需要 id,请使用 car.owner_id,这样您就不必从数据库中提取所有者对象。

如果你使用这个对象所有者,没有区别,你可以使用 car.owner_id 或 car.owner.id 反正Django将不得不获取所有者对象,因为你使用它。

【讨论】:

    猜你喜欢
    • 2020-05-30
    • 2015-09-12
    • 2012-09-29
    • 2015-02-15
    • 2017-10-13
    • 2016-05-25
    • 2016-12-18
    • 2018-07-18
    • 1970-01-01
    相关资源
    最近更新 更多