filter.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. 'email': ['icontains', 'exact'],
  17. 'phone': ['icontains', 'exact'],
  18. 'address': ['icontains', 'exact'],
  19. 'create_time': ['exact', 'lt', 'gt'],
  20. 'update_time': ['exact', 'lt', 'gt'],
  21. }
  22. class AcademicProfileFilter(FilterSet):
  23. class Meta:
  24. model = AcademicProfile
  25. fields = {
  26. 'role': ['exact', 'icontains'],
  27. 'enrollment_year': ['exact', 'lt', 'gt'],
  28. 'graduation_year': ['exact', 'lt', 'gt'],
  29. 'department': ['icontains'],
  30. 'major': ['icontains'],
  31. 'research_tags': ['icontains'],
  32. 'skill_tags': ['icontains'],
  33. }
  34. class ResearchGroupFilter(FilterSet):
  35. class Meta:
  36. model = ResearchGroup
  37. fields = {
  38. 'name': ['icontains', 'exact'],
  39. 'description': ['icontains'],
  40. 'created_by': ['exact'],
  41. 'created_at': ['exact', 'lt', 'gt'],
  42. 'is_active': ['exact'],
  43. }
  44. class GroupMembershipFilter(FilterSet):
  45. class Meta:
  46. model = GroupMembership
  47. fields = {
  48. 'role': ['exact'],
  49. 'status': ['exact'],
  50. 'joined_at': ['exact', 'lt', 'gt'],
  51. 'left_at': ['exact', 'lt', 'gt'],
  52. }