Я создал фильтр , используя django -фильтр , который должен запрашивать поле YearLevel и отображать строки, соответствующие выбранным флажкам (год 8, год 9, год ...).
Хотя фильтр работает немного, поскольку он отображает работающий CharFilter / Field, который Я могу вручную ввести уровень года, и он вернет соответствующую строку / строки; ниже он содержит набор флажков с первичными ключами в качестве меток и ничего не возвращает при выборе.
My models:
class StudentProfile(models.Model):
RelatedPersonName = models.CharField(max_length=10)
RelatedPersonFirstName = models.CharField(max_length=30)
RelatedPersonFamName = models.CharField(max_length=30)
StudentLegalName = models.CharField(max_length=30)
StudentFamName = models.CharField(max_length=30)
Email = models.CharField(max_length=130)
Street1 = models.TextField(max_length=30)
Suburb = models.CharField(max_length=30)
State = models.CharField(max_length=5)
PostCode = models.CharField(max_length=6)
StudentLegalName = models.CharField(max_length=30)
StudentFamName = models.CharField(max_length=30)
StudentNo = models.CharField(primary_key=True,max_length=10)
Class = models.CharField(max_length=6)
YearLevel = models.CharField(max_length=10)
objects = StudentProfileManager()
class AttendanceQuerySet(models.QuerySet):
def get_yearlevel(self, yearlevel):
return self.select_related('BCEID').filter(BCEID_id__YearLevel = yearlevel)
def get_all_studentprofile(self):
return self.select_related('BCEID')
class AttendanceManager(models.Manager):
def get_queryset(self):
return AttendanceQuerySet(self.model, using=self._db)
def get_yearlevel(self, yearlevel):
return self.get_queryset().get_yearlevel(yearlevel)
def get_all_studentprofile(self):
return self.get_queryset().get_all_studentprofile()
class Attendance(models.Model):
BCEID = models.OneToOneField(StudentProfile,primary_key=True,on_delete=models.CASCADE)
AttendanceRate = models.CharField(max_length=10)
objects = AttendanceManager()
Filters.py
class YearLevelFilter(django_filters.FilterSet):
yearlevel = django_filters.ModelMultipleChoiceFilter(
queryset=Attendance.objects.all().distinct(),
field_name="StudentNo",
to_field_name="BCEID",
widget=forms.CheckboxSelectMultiple(),
label="Year Level",
label_suffix="",
)
class Meta:
model = Attendance
fields = ['BCEID__YearLevel']
Пожалуйста, помогите.
NB. Не обращайте внимания на вары в верблюжьем корпусе.