在管理中筛选对象

2024-09-28 21:30:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有模特组和会员。在管理页面中,我想显示具有特定角色的组成员。怎么做?默认情况下,管理员立即显示组的所有成员

型号.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)

Tags: pymodeladminonmodelsgroupdeletemax
1条回答
网友
1楼 · 发布于 2024-09-28 21:30:42

the documentationTabularInline shares methods with ModelAdmin包括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)

相关问题 更多 >