Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多对多字段上的Django外键_Django_Django Models - Fatal编程技术网

多对多字段上的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作为任何内容导入