0

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')

モデル.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)

これについてのガイダンスが必要です....

4

1 に答える 1

3

同じ学生には複数の関係が存在する必要があります。大人3人の役割を持つ学生はP3人の学生を返すと言います。あなたはユニークな学生を確保するためdistinct()にあなたに電話を追加する必要があります。QuerySet

于 2012-08-27T05:23:17.287 に答える