发布于2021-07-24 21:23 阅读(872) 评论(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/
来源:编程知识网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!