filter.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from django_filters import FilterSet
  2. from .models import Users, AcademicProfile, ResearchGroup, GroupMembership
  3. class UsersFilter(FilterSet):
  4. class Meta:
  5. model = Users
  6. fields = {
  7. 'name': ['icontains', 'exact'],
  8. 'openid': ['icontains', 'exact'],
  9. 'appid': ['icontains', 'exact'],
  10. 'vip': ['exact'],
  11. 'vip_time': ['exact'],
  12. 'is_delete': ['exact'],
  13. 'developer': ['exact'],
  14. 't_code': ['icontains'],
  15. 'ip': ['icontains'],
  16. 'avatar': ['icontains'],
  17. 'create_time': ['exact', 'lt', 'gt'],
  18. 'update_time': ['exact', 'lt', 'gt'],
  19. }
  20. class AcademicProfileFilter(FilterSet):
  21. class Meta:
  22. model = AcademicProfile
  23. fields = {
  24. 'role': ['exact', 'icontains'],
  25. 'enrollment_year': ['exact', 'lt', 'gt'],
  26. 'graduation_year': ['exact', 'lt', 'gt'],
  27. 'department': ['icontains'],
  28. 'major': ['icontains'],
  29. 'research_tags': ['icontains'],
  30. 'skill_tags': ['icontains'],
  31. }
  32. class ResearchGroupFilter(FilterSet):
  33. class Meta:
  34. model = ResearchGroup
  35. fields = {
  36. 'name': ['icontains', 'exact'],
  37. 'description': ['icontains'],
  38. 'created_by': ['exact'],
  39. 'created_at': ['exact', 'lt', 'gt'],
  40. 'is_active': ['exact'],
  41. }
  42. class GroupMembershipFilter(FilterSet):
  43. class Meta:
  44. model = GroupMembership
  45. fields = {
  46. 'role': ['exact'],
  47. 'status': ['exact'],
  48. 'joined_at': ['exact', 'lt', 'gt'],
  49. 'left_at': ['exact', 'lt', 'gt'],
  50. }