我正在为我的应用制作模型,我对模型的关系有疑问。
公司模型有一个或多个主管局。 办公室有一名或多名员工。
class Company(models.Model):
name = models.CharField(max_length=50)
mail = models.EmailField(null=True, blank=True)
NIF = models.CharField(max_length=9, null=True, blank=True)
def __unicode__(self):
return self.name
class Office(models.Model):
company = models.ForeignKey(Company)
name = models.CharField(max_length=50, default='Main')
direction = models.CharField(max_length=50)
def __unicode__(self):
return self.name
class Employee(models.Model):
company = models.ForeignKey(Company)
office = models.ForeignKey(Office)
name = models.CharField(max_length=50)
mail = models.EmailField(null=True, blank=True)
def __unicode__(self):
return self.name
如何在员工与公司和办公室之间建立关系?
答案 0 :(得分:2)
从company
删除Employee
外键。
class Employee(models.Model):
office = models.ForeignKey(Office)
name = models.CharField(max_length=50)
mail = models.EmailField(null=True, blank=True)
def __unicode__(self):
return self.name
由于Office
模型已与Company
建立了关联且Employee
与Office
有关系,因此您只需访问employee.office.company
-
employee_one = Employee.objects.get(pk=1)
company_of_employee_one = employee_one.office.company
如果您想以其他方式访问数据(例如,获取公司的所有办公室,获取办公室的所有员工),您可以执行以下操作 -
company = Company.objects.get(pk=1)
offices = company.office_set.all()
for office in offices:
employees = office.employee_set.all()