0

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

公司模式有一个或多个办公室。办公室有一名或多名员工。

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

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

4

1 回答 1

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模型已经与 有关系并CompanyEmployee有关系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()
于 2013-03-19T22:01:03.583 回答