如何在管理表单中显示模型的外键字段

How to show a foreign key field of a model in admin form

在 models.py 我创建了两个模型

class Tutor(models.Model):
...
class Case(models.Model):
    tutor_applied = models.ManyToManyField(
        Tutor,
        related_name="case_set",
        default=None,
        blank=True,
    )

在 admin.py 中,我正在尝试

class TutorAdmin(admin.ModelAdmin):
    fieldsets = [
        (
            None,
            {
                "fields": [
                    "case_set",
                ]
            },
        )
    ]

这不起作用,显示此错误

Unknown field(s) (case_set) specified for Tutor. Check fields/fieldsets/exclude attributes of class TutorAdmin.

我试过也试过:

class TutorAdmin(admin.ModelAdmin):
    def case_set(self):
        u = self.case_set
        if u is not None:
            return u.case_set

    fieldsets = [
        (
            None,
            {
                "fields": [
                    case_set,
                ]
            },
        )
    ]

显示此错误

sequence item 0: expected str instance, function found

如何解决此问题以显示 'case_set' 字段?

我希望在 'Tutor' 管理表单中看到类似的内容,但是 case_set

为了显示反向多对多关系,您需要显示从 m2m 字段创建的模型,它是您的案例和导师模型之间的 link:

class CaseInline(admin.TabularInline):
    model = Case.tutor_applied.through


class TutorAdmin(admin.ModelAdmin):
    fields = ('__all__')
    inlines = [CaseInline, ]

你可以看看docs