代码之家  ›  专栏  ›  技术社区  ›  User

Django:用整数设置外键?

  •  85
  • User  · 技术社区  · 15 年前

    是否有方法使用模型的整数ID设置外键关系?这将用于优化目的。

    例如,假设我有一个雇员模型:

    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并以这种方式设置关系。这样我就可以避免DB调用,先获取EmployeeType对象。

    2 回复  |  直到 8 年前
        1
  •  179
  •   Will Hardy    8 年前

    是的:

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

    ForeignKey 字段将其值存储在具有 _id 最后,您可以直接访问,避免访问数据库。

    这个 圣婴 版本A 外键 是姜戈的一个特别有用的方面,在适当的时候每个人都应该知道和使用。

    警告:

    @runekaagaard指出 employee.type 在最近的django版本中,即使在调用 employee.save() (它保留了它的旧价值)。使用它当然会破坏上述优化的目的,但我更希望意外的额外查询不正确。所以要小心,只有当您完成实例的工作时才使用它(例如 employee )

        2
  •  34
  •   Jacinda    12 年前

    使用 create 要创建对象并将其保存到数据库中,请执行以下操作:

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