Как отобразить выпадающий список для моделей ForeignKey на РОДИТЕЛЬСКОЙ странице администратора

#python #django #model #admin

#python #django #Модель #администратор

Вопрос:

Кажется, не могу понять это. У меня есть model — Show и Episode, у которых есть отношение 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',),
        }),)

  

Ответ №1:

Вы можете использовать поля, доступные только для чтения. Вот пример:

 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