【发布时间】:2020-10-29 23:51:47
【问题描述】:
我使用 django-filter 创建了一个 filter,它应该 查询 YearLevel 字段并显示与所选复选框匹配的行(第 8 年、第 9 年、第 ...)。
虽然过滤器有点工作,因为它显示了一个正常工作的 CharFilter/Field,我可以手动输入年份级别并返回相应的行/秒;它下面包含一堆以主键作为标签的复选框,并且在选中时不返回任何内容。
我的模型:
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()
过滤器.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']
请帮忙。
注意。请忽略驼峰式变量。
【问题讨论】:
标签: django filter foreign-keys inner-join django-filter