Как добавлять отображаемые поля в List display через цикл? Суть такая есть модель человек и привязанная к ней модель мероприятия на которые он подписан. В list display нужно отобразить имя человека и все мероприятия. И если он подписан на это мероприятие вывести название а там где он не подписан оставить пустым. Подскажите как через цикл заполнить list_display?

21 Авг 2019 в 06:24
238 +1
0
Ответы
1

Для реализации такой функциональности в Django можно воспользоваться методом list_display в административной панели. Для отображения полей модели через цикл можно использовать функцию или метод в классе ModelAdmin.

Ниже приведен пример кода, который демонстрирует, как реализовать подобный функционал:

from django.contrib import admin
from .models import Person, Event
class PersonAdmin(admin.ModelAdmin):
model = Person
def get_events(self, obj):
events = Event.objects.all()
display_events = []
for event in events:
if obj in event.attendees.all():
display_events.append(event.name)
else:
display_events.append('')
return ', '.join(display_events)
get_events.short_description = 'Events'
list_display = ['name', 'get_events']
admin.site.register(Person, PersonAdmin)

В данном примере создается класс PersonAdmin, который наследуется от admin.ModelAdmin. В методе get_events производится выборка всех мероприятий и проверка, подписан ли человек на каждое мероприятие. Затем создается список названий мероприятий, который будет отображаться в списке. Метод get_events добавляется в list_display, чтобы можно было отображать названия мероприятий рядом со именем человека в административной панели Django.

Таким образом, данный код позволит отображать имя человека и все мероприятия, на которые он подписан, в административной панели Django.

20 Апр 2024 в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир