Django外键在多对多领域

时间:2020-04-11 13:24:13

标签: django django-models

公司可以有许多职位类别。工作必须与该公司的工作类别相关。我该怎么做呢?

因此,工作是公司类别选择的外键。

class Company(models.Model):
    job_categories = models.ManyToManyField(JobCategory,blank=False)


class Job(models.Model):
    category = models.ForeignKey(Company, on_delete=models.CASCADE)

1 个答案:

答案 0 :(得分:2)

此代码可能会转换您想要的内容:两个嵌套的1-N关系

class Company(models.Model):
    (...)  # No need for a field here

class JobCategory(models.Model):
    company = models.ForeignKey(Company, on_delete=models.CASCADE, related_name='categories'))

class Job(models.Model):
    category = models.ForeignKey(JobCategory, on_delete=models.CASCADE, related_name='jobs')

您可以利用反向关系:

company = Company.object.get(...)
related_categories = company.categories.all()
for category in related_categories:
   jobs = category.jobs.all()
   print(jobs)