有没有办法使用模型的整数 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)
我想要拥有无限员工类型的灵 active ,但在部署的应用程序中可能只有一种类型,所以我想知道是否有办法硬编码 ID 并以此方式设置关系。这样我就可以避免先调用数据库来获取 EmployeeType 对象。
最佳答案
是的:
employee = Employee(first_name="Name", last_name="Name")
employee.type_id = 4
employee.save()
ForeignKey
字段将其值存储在末尾带有 _id
的属性中,您可以直接访问该属性以避免访问数据库。
ForeignKey
的 _id
版本是 Django 的一个特别有用的方面,每个人都应该知道并在适当的时候不时使用它。
警告:[ < Django 2.1 ]
@RuneKaagaard 指出 employee.type
在最近的 Django 版本中并不准确,即使在调用 employee.save()
之后(它保持其旧值)也是如此。使用它当然会破坏上述优化的目的,但我更愿意意外的额外查询而不是不正确的。所以要小心,只有当你完成你的实例工作时才使用它(例如 employee
)。
注意:正如@humcat 在下面指出的那样,错误已在 Django 2.1 中修复
关于Django:使用整数设置外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2846029/