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)