Как добавлять отображаемые поля в List display через цикл? Суть такая есть модель человек и привязанная к ней модель мероприятия на которые он подписан. В list display нужно отобразить имя человека и все мероприятия. И если он подписан на это мероприятие вывести название а там где он не подписан оставить пустым. Подскажите как через цикл заполнить list_display?
Для реализации такой функциональности в 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.
Для реализации такой функциональности в Django можно воспользоваться методом list_display в административной панели. Для отображения полей модели через цикл можно использовать функцию или метод в классе ModelAdmin.
Ниже приведен пример кода, который демонстрирует, как реализовать подобный функционал:
from django.contrib import adminfrom .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.