Django admin中自定义列表筛选的重复结果

Django admin中自定义列表筛选的重复结果,django,django-admin,Django,Django Admin,我试图在Django Admin中执行自定义过滤器,但在我的例子中,当我基于家长和教师进行过滤时,似乎会得到重复的值。意思是说父母的数量(481)比总数(221)多。有些值会重复。。我如何避免这种情况?有什么想法吗 admin.py: class AdultRoleListFilter(SimpleListFilter): title = _('Role of Adult') parameter_name = 'adultrole' def lookups(self,

我试图在Django Admin中执行自定义过滤器,但在我的例子中,当我基于家长和教师进行过滤时,似乎会得到重复的值。意思是说父母的数量(481)比总数(221)多。有些值会重复。。我如何避免这种情况?有什么想法吗

admin.py:

class AdultRoleListFilter(SimpleListFilter):

    title = _('Role of Adult')
    parameter_name = 'adultrole'
    def lookups(self, request, model_admin):
        return (
            ('T', _('Teacher')),
            ('P', _('Parent')),)
    def queryset(self, request, queryset):
        if self.value() == 'P':
            return queryset.filter(relationships__role='P')
        if self.value() == 'T':
            return queryset.filter(relationships__role='T')
Models.py

class Student(models.Model):
   name = models.CharField(max_length=255)
   birthday= models.DateField(blank=True,null=True)

class Adult(models.Model):
   user = models.OneToOneField(User)
   students = models.ManyToManyField(Student, through='StudentAdultRelationship', related_name='adults')

class class StudentAdultRelationship(models.Model):

    PARENT = 'P'
    TEACHER ='T'
    FOLLOWER = 'F'

    ROLE_CHOICES = (
        (PARENT, 'Parent'),
        (TEACHER, 'Teacher'),
        (FOLLOWER, 'Follower'),
    )

    adult = models.ForeignKey(Adult, related_name='relationships')
    student = models.ForeignKey(Student, related_name='relationships')
    role = models.CharField(choices=ROLE_CHOICES, max_length=1)

需要一些指导….

同一个学生必须存在多种关系;假设一名学生有3名成人角色
P
将返回3名学生;您必须向您的
查询集添加
distinct()
调用,以确保学生的唯一性。

同一学生必须存在多个关系;假设一名学生有3名成人角色
P
将返回3名学生;您必须向您的
QuerySet
添加一个
distinct()
调用,以确保学生的独特性。

它应该放在哪里?它是不同的(queryset.filter(relationships__role='P'))?@lakesh;queryset.filter().distinct()它到底应该放在哪里?它是不同的(queryset.filter(relationships__role='P'))?@lakesh;queryset.filter().distinct()