首页 > 解决方案 > 如何在 PARENT 管理页面上显示 ForeignKey 模型的下拉列表

问题描述

似乎无法弄清楚这一点。我有一个模型 - Show 和 Episode,它与 Show 具有 ForiegnKey 关系。在显示管理页面上,我想要一个所有剧集的下拉显示,它将链接到他们的管理模型页面......我唯一能得到的是一个折叠的表单作为只读。我喜欢这个指向管理页面的链接,但我只希望它在下拉列表中。

***models.py***
class Show(models.Model):
    title = models.CharField(_("title"), null=True, max_length=5000)
    slug = models.SlugField(_("slug"),  max_length=5000, unique=True)

class Episode(models.Model):
    show = models.ForeignKey(Show, verbose_name=_("show"), on_delete=models.CASCADE)
    title = models.CharField(_("title"), null=True, max_length=5000)
***admin.py***
class ShowAdmin(admin.ModelAdmin):
    list_display = ('title', 'get_latest_duration', 'get_latest_pub_date',)
    inlines = [
        EpisodeInline,
    ]

class EpisodeInline(admin.StackedInline):
    model = Episode
    fieldsets = (
        ('Episodes', {
            'classes': ('collapse',),
            'fields': ('title',),
        }),)

标签: pythondjangomodeladmin

解决方案


您可以使用只读字段。这是一个例子:

from django.contrib import admin

class ShowAdmin(admin.ModelAdmin):
    readonly_fields = ('episode_list',)

    def episode_list(self, instance):
        # you may render a html list here with episode names
        return ",".join([x.name for x in instance.episodes]) # replace episodes with your model's related name

请参阅此处的示例:https ://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.readonly_fields


推荐阅读