Django:使用整数设置外键?

有没有办法使用模型的整数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) 

我希望拥有无限制员工types的灵活性,但是在部署的应用程序中,可能只有一个types,所以我想知道是否有一种方法来硬编码id并设置这种关系。 这样,我可以避免数据库调用首先获得EmployeeType对象。

是的:

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

ForeignKey字段将它们的值存储在最后带有_id的属性中,您可以直接访问它们以避免访问数据库。

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

警告:

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

另一种使用create创build对象并将其保存到数据库中的行:

 employee = Employee.objects.create(first_name='first', last_name='last', type_id=4)