Django模型关系

时间:2013-03-19 21:48:54

标签: python django

我正在为我的应用制作模型,我对模型的关系有疑问。

公司模型有一个或多个主管局。 办公室有一名或多名员工。

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

如何在员工与公司和办公室之间建立关系?

1 个答案:

答案 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建立了关联且EmployeeOffice有关系,因此您只需访问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()