假设我们有一个名为Employee
的类。我想要一个字段引用同一类的不同实例。
如何编写这个任务?下面的代码是否可行?
ref_employee= models.ForeignKey('self',null=True,blank=True)
假设我们有一个名为Employee
的类。我想要一个字段引用同一类的不同实例。
如何编写这个任务?下面的代码是否可行?
ref_employee= models.ForeignKey('self',null=True,blank=True)
models.ForeignKey('self')
可以创建一个递归关系——一个对象与自身之间具有多对一关系。我相信你甚至可以排除应用程序名称,看起来像:
ref_employee= models.ForeignKey('Employee',null=True,blank=True)
您可以通过名称(使用字符串,包括包名)引用其他模型,而不是直接使用类:
因此,如果您的Employee
类位于hr
应用程序中:
class Employee(models.model):
other_employee = models.ForeignKey('hr.models.Employee', null=True, blank=True)
models.ForeignKey('hr.Employee', null=True, blank=True)
)。 - CoatedMoose是的,这是正确的,但请考虑编写'null=True'
,因为如果您不提及它,您的数据库将递归创建联合表。
强制要求id
和ref_employee_id
具有不同的值的限制超出了Django ORM的范围。 您需要通过在syncdb中使用SQL或手动方式在数据库级别上添加该约束。