如何设置Django TabularInline以便我可以编辑中间表对象

时间:2017-05-09 17:40:23

标签: django admin

我正在使用TabularInline编辑器来编辑模型与另一个模型的关系。这是一张多对多的地图表。有没有办法让django在tabularInline的行中放入一个指向地图表本身的图标链接?

例如,如果机器和零件由Machine2Part一起映射,并且我在机器中使用tabularInline来提供其零件的编辑,我将获得下拉菜单,允许我选择很棒的零件,但我也想要一个将我带到此关系后面的Machine2Part对象/行的管理表单的链接,因为我的Machine2Part管理表单具有我希望能够从该位置访问的字段编辑。

class Part (models.Model):
    name = models.CharField(max_length=45)

    class Meta:
        db_table = "part"

    def __str__ (self):
        return self.name

class Machine (models.Model):
    name = models.CharField(max_length=45)
    parts = models.ManyToManyField(Part, through='Machine2Part')
    class Meta:
        db_table = "machine"

    def __str__ (self):
        return self.name


class Machine2Part (models.Model):
    machine = models.ForeignKey(Machine,db_column='machineId')
    part = models.ForeignKey(Part,db_column='partId')
    class Meta:
        db_table = "machine2part"

class Machine2PartInline (admin.TabularInline):
    # fields = ['name']
    model = Machine2Part

class MachineAdmin (admin.ModelAdmin):
    inlines = [Machine2PartInline]

admin.site.register(Machine, MachineAdmin)
admin.site.register(Part)
admin.site.register(Machine2Part)

2 个答案:

答案 0 :(得分:0)

show_change_link = True会添加"更改" TabularInline

中每一行旁边的链接
class Machine2PartInline (admin.TabularInline):
    # fields = ['name']
    model = Machine2Part
    show_change_link = True

答案 1 :(得分:0)

如果您的模型Machine2Part包含其他字段(除了FK),您可以使用它来显示内联中的字段,而无需其他链接。

class Machine2PartInline (admin.TabularInline):
    model = Machine.parts.through

See django docs reference