有没有一种方法可以使用模型的整数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,你可以直接访问该属性以避免访问数据库。
_id
a的_id版本ForeignKey是Django的一个特别有用的方面,每个人都应该在适当的时候不时知道和使用。
ForeignKey
警告:
@RuneKaagaard指出employee.type,即使在调用之后,在最新的Django版本中此后也不准确employee.save()(它保持其旧值)。使用它当然会破坏上述优化的目的,但是我宁愿偶然的额外查询而不是错误的查询。因此请小心,仅在完成实例处理后(例如employee)使用此功能。
@RuneKaagaard
employee.type
employee