filters.py 885 B

1234567891011121314151617181920212223
  1. # coding=utf-8
  2. import django_filters
  3. from .models import ExamPaper
  4. class ExamPaperFilter(django_filters.FilterSet):
  5. name = django_filters.CharFilter(field_name="name", lookup_expr="icontains")
  6. subject = django_filters.CharFilter(field_name='subject_id')
  7. type = django_filters.CharFilter(field_name='type')
  8. status = django_filters.CharFilter(method='status_filter')
  9. def status_filter(self, queryset, name,value):
  10. from apps.examination.exam.models import ExamLog
  11. exampaper_ids = ExamLog.objects.filter(user=self.request.user, delete=False).values_list('exampaper_id', flat=True)
  12. if value == '1':
  13. queryset = queryset.filter(id__in=exampaper_ids)
  14. elif value == '2':
  15. queryset = queryset.exclude(id__in=exampaper_ids)
  16. return queryset
  17. class Meta:
  18. model = ExamPaper
  19. fields = "__all__"