django - List_display for ManytoMany fields in Admin panel -


i have 2 apps: visitors , meetings, linked via manytomany field:

visitors/models.py:

from django.db import models meetings.models import meeting  class visitor(models.model):      visitor_name = models.charfield(default='name', max_length=128, blank=false, null=false)     visitor_meetings = models.manytomanyfield(meeting)      def __str__(self):         return self.visitor_name 

meetings/models.py:

from django.db import models team.models import team  class meeting(models.model):     team_member = models.foreignkey(team)     meeting_name = models.charfield(default='name', max_length=128, blank=true, null=true)      def __str__(self):         return self.meeting_name 

i know correct way list_display meetings in visitors admin panel here: https://stackoverflow.com/a/18108586/2429989.

however, how can show list_display visitors @ each meeting in meetings admin panel? have tried:

meetings/admin.py:

from django.contrib import admin .models import meeting visitors.models import visitor  class meetingadmin(admin.modeladmin):     list_display = ['id', 'team_member', 'show_visitors' ]      def show_visitors(self, obj):         return "\n".join([a.visitor_name in obj.visitor.all()])  admin.site.register(meeting, meetingadmin) 

this results in 'meeting' object has no attribute 'visitor', going wrong?

the default reverse lookup relation it's obj.tablename_set. in case need use obj.visitor_set.all()

class meetingadmin(admin.modeladmin):     list_display = ['id', 'team_member', 'show_visitors' ]      def show_visitors(self, obj):         return "\n".join([a.visitor_name in obj.visitor_set.all()]) 

however, can customize name of reverse lookup defining related_name:

class visitor(models.model):     visitor_name = models.charfield(default='name', max_length=128, blank=false, null=false)     visitor_meetings = models.manytomanyfield(meeting, related_name='visitors')      def __str__(self):         return self.visitor_name 

all meeting objects have access visitors. use like:

class meetingadmin(admin.modeladmin):     list_display = ['id', 'team_member', 'show_visitors' ]      def show_visitors(self, obj):         return "\n".join([a.visitor_name in obj.visitors.all()]) 

Comments