本站消息

  出租广告位,需要合作请联系站长

  今日名言-想象你自己对困难作出的反应,不是逃避或绕开它们,而是面对它们,同它们打交道,以一种进取的和明智的方式同它们奋斗 。——马克斯威尔·马尔兹

  今日名言-用谅解、宽恕的目光和心理看人、待人。人就会觉得葱笼的世界里,春意盎然,到处充满温暖。——蔡文甫


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Django:使用整数设置外键?

发布于2021-07-24 21:23     阅读(858)     评论(0)     点赞(12)     收藏(2)


有没有办法使用模型的整数 id 设置外键关系?这将用于优化目的。

例如,假设我有一个 Employee 模型:

class Employee(models.Model):
  first_name = models.CharField(max_length=100)
  last_name = models.CharField(max_length=100)
  type = models.ForeignKey('EmployeeType')

EmployeeType(models.Model):
  type = models.CharField(max_length=100)

我想要拥有无限员工类型的灵活性,但在部署的应用程序中可能只有一种类型,所以我想知道是否有办法对 id 进行硬编码并以这种方式设置关系。这样我就可以避免首先获取 EmployeeType 对象的数据库调用。


解决方案


是的:

employee = Employee(first_name="Name", last_name="Name")
employee.type_id = 4
employee.save()

ForeignKey字段将其值存储_id在末尾的属性中,您可以直接访问该属性以避免访问数据库。

a 的_id版本ForeignKey是 Django 的一个特别有用的方面,每个人都应该在适当的时候不时知道和使用它。

警告: [ < Django 2.1 ]

@RuneKaagaard 指出,employee.type在最近的 Django 版本中,即使在调用之后employee.save()(它保持其旧值)也不准确使用它当然会破坏上述优化的目的,但我更喜欢意外的额外查询而不是不正确。所以要小心,只有当你完成你的实例工作时才使用它(例如employee)。

注意:正如@humcat 在下面指出的,该错误已在Django 2.1 中修复



所属网站分类: 技术文章 > 问答

作者:官方问答小能手

链接:http://www.pythonpdf.com/blog/article/250/7310b90786927acb6ddc/

来源:编程知识网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

12 0
收藏该文
已收藏

评论内容:(最多支持255个字符)