如何使多对多关系像外键关系一样?

时间:2016-11-06 06:58:59

标签: django django-models django-admin

我试图让TabularInline与多对多关系一起工作,但我只能让关系对象显示出来。如果我使用外键关系,它可以正常工作。

所以,让我们说这是我的多对多关系:

# Jobs have many workers, and workers can be assigned to many jobs

class Job(models.Model):
    workers = models.ManyToManyField(Worker, related_name='jobs')

class Worker(models.Model):
    name = models.CharField(max_length=255)

    # workers relationships with other models
    insurance = models.ForeignKey(Insurance, null=True, blank=True, default=None)
    location = models.ForeignKey(Location, null=True, blank=True, default=None)

这与TabularInline不能很好地协作,因为它只显示Job_Worker对象。

所以我想知道是否有某种方法可以让关系看起来像是一个外键关系?例如,worker获取中间表的外键,并使用“through”。最终的结果是它为TabularInline“开箱即用”。

谢谢。

1 个答案:

答案 0 :(得分:1)

我担心你不能使用股票Django工具。它是好的。它阻止您修改多对多的另一端的相关对象,实际上可能被其他实例使用。

如果您感到绝望并且必须完全按照您的描述进行操作,那么您唯一的方法就是为内联管理员创建自定义表单。它也是described in the documentation