简体   繁体   中英

Filter objects in admin

I have models Group and Membership. In admin page I want to show members of group who has specific role. How to make it? By default admin right now show me all members of group.

models.py :

class Group(models.Model):
    members = models.ManyToManyField(User, through='Membership',)

class Membership (models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE,)
    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    role = models.CharField(max_length=20, choices=ROLE_CHOICES,)

admin.py :

class MembershipInline(admin.TabularInline):
    model = Membership
    form = MembershipAdminForm
    extra = 1
    max_num = 1


class MembershipAdmin(admin.ModelAdmin):
    inlines = (MembershipInline,)

admin.site.register(Group, MembershipAdmin)

Per the documentation , TabularInline shares methods with ModelAdmin including get_queryset() :

class MembershipInline(admin.TabularInline):
    model = Membership
    form = MembershipAdminForm
    extra = 1
    max_num = 1

    def get_queryset(self, request):
        qs = super(MembershipInline, self).get_queryset(request)
        return qs.filter(role=some_query_here)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM