多对多字段上的Django外键
一家公司可以有许多工作类别。工作必须与该公司的工作类别相关。我怎样才能正确地做呢 因此,工作是公司类别选择的外键多对多字段上的Django外键,django,django-models,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)
class Company(models.Model):
job_categories = models.ManyToManyField(JobCategory,blank=False)
class Job(models.Model):
category = models.ForeignKey(Company, on_delete=models.CASCADE)
这段代码可能会转换您想要的:两个嵌套的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)
此外,建议将模型类作为
string
(又称惰性关系)传递,以避免任何循环依赖关系:job\u categories=models.ManyToManyField('your\u app\u name.jobcategority',blank=False)
@HarunYilmaz这不会成为问题。在我的其他应用程序上,我使用oherappname.models中的,将modelclass作为任何内容导入