2016-11-06 62 views
0

我想让一个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

恐怕你不能用股票的Django工具来做。这是很好的。它可以防止您修改多对多另一端的相关对象,而这些对象实际上可能被其他实例使用。

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