Django-filter: рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реНрдпреВрд╕реЗрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдбреАрдЖрд░рдПрдл рдПрдХреАрдХрд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдЕрдЧре░ 2018  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: carltongibson/django-filter

рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд @action рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рд╡реНрдпреВрд╕реЗрдЯ рдореЗрдВ рдХрдИ рд╕реВрдЪреА рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдВ рдбреЙрдХреНрд╕ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд┐рд▓реНрдЯрд░_рдХреНрд▓рд╛рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░рд╕реЗрдЯ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИред рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпреВрд╕реЗрдЯ рд╕реВрдЪреА рдФрд░ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХреНрд░рд┐рдпрд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рди рдХрд┐ рдХрд┐рд╕реА рднреА рдХрд╕реНрдЯрдо рд╕реВрдЪреА рдпрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХреНрд░рд┐рдпрд╛рдУрдВ рдкрд░, рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдХреЙрд▓ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓реЗ рдЬрд╛рдХрд░ рдХрд╛рдо рдХрд┐рдпрд╛

@action(methods=['GET'], detail=False)
def simplelist(self, request, *args, **kwargs):
    qs = self.filter_queryset(self.get_queryset())
    serializer = SpecializedModelListSerializer(qs, many=True)
    return Response(serializer.data, status=status.HTTP_200_OK)

рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!!!

рд╕рднреА 9 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рд╛рдп @estianrossред рдпрджрд┐ рд╣рдо рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдЖрдкрдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпрд╛рдВ filter_queryset() рдкрд░ рдХреЙрд▓ рдХрд░ рд░рд╣реА рд╣реИрдВ?

рд╡реЗ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдЧрд░ рдпрд╣ рдореБрджреНрджрд╛ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЬреЛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЙрд╕рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдиреАрдЪреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдирдореВрдирд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╢рд╛рдорд┐рд▓ рдХреА рд╣реИ

@action(methods=['GET'], detail=False)
def simplelist(self, request, *args, **kwargs):
    serializer = SpecializedModelListSerializer(self.filter_queryset(self.get_queryset()), many=True)
        return Response(serializer.data, status=status.HTTP_200_OK)

рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ APITestCase рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕рдореЗрдВ url + рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд▓рдЧ рдХрд░реЗрдВ рдЬрд┐рд╕рдХреА рдЖрдк рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдлрд┐рд░ рдЖрдк рдпрд╣ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдХрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдЪреАрдЬреЗрдВ рдХрд╣рд╛рдВ рдЧрд▓рдд рд╣реЛ рд░рд╣реА рд╣реИрдВ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рдбрд╛рд▓реЗрдВред

(рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдмрд┐рдирд╛ рд╕рд▓рд╛рд╣ рджреЗрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред)

рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдХреЙрд▓ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓реЗ рдЬрд╛рдХрд░ рдХрд╛рдо рдХрд┐рдпрд╛

@action(methods=['GET'], detail=False)
def simplelist(self, request, *args, **kwargs):
    qs = self.filter_queryset(self.get_queryset())
    serializer = SpecializedModelListSerializer(qs, many=True)
    return Response(serializer.data, status=status.HTTP_200_OK)

рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!!!

рдпрд╣ рдореЗрд░реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред

@ рдХреНрд░рд┐рдпрд╛ (рд╡рд┐рдзрд┐рдпрд╛рдБ = ['рдкреНрд░рд╛рдкреНрдд'], рд╡рд┐рд╡рд░рдг = рд╕рддреНрдп, url_path = 'рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ_by_card_no/(< int: CardNo> )')
def getByCarNo (рд╕реНрд╡рдпрдВ, рдЕрдиреБрд░реЛрдз, CardNo):
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ = get_object_or_404 (рдХрд░реНрдордЪрд╛рд░реА_рдореЙрдбрд▓, EmpCardNo = CardNo)
рд╡рд╛рдкрд╕реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ (serializers.EmployeeInfoSerializer (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛)ред рдбреЗрдЯрд╛, рд╕реНрдерд┐рддрд┐ = рд╕реНрдерд┐рддрд┐ред HTTP_200_OK)

рдореИрдВ рдХрд░реНрдордЪрд╛рд░реА рдЖрдИрдбреА рдХреЗ рдмрдЬрд╛рдп рдХрд░реНрдордЪрд╛рд░реА рдХреЛ рдЙрд╕рдХреЗ рдХрд╛рд░реНрдб рдирдВрдмрд░ рд╕реЗ рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ

рдХреЛрдИ рдореБрдЭреЗ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдпреВрдЖрд░рдПрд▓ рдореЗрдВ рдЕрдкрдиреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд╕рд╛рде рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдПрдХреАрдХрд░рдг рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдиреАрдЪреЗ рд╡рд╣ рдХреНрд░рд┐рдпрд╛ рдереА рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдереА

@action(methods=['GET'], detail=False)
def export(self, request): 
    queryset = self.get_queryset()
    filtered_queryset = self.filter_queryset(queryset)

рдбреАрдЖрд░рдПрдл рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдПрдкреАрдЖрдИ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп, рдЬреЛ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛ рд╡рд╣ рдерд╛
/api/viewname/export/ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рд▓рд╛рдЗрдХ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
/api/viewname/export/?query_param_1=value1&?query_param_2=value2

рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдо рдкрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░рд╕реЗрдЯ рдХреНрд▓рд╛рд╕ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░реНрдб_рдХреНрд╡реЗрд░реАрд╕реЗрдЯ рд╡реИрд░рд┐рдПрдмрд▓ рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреНрд╡реЗрд░реАрд╕реЗрдЯ рдорд┐рд▓реЗрдЧрд╛

рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдордЭ рд▓рд┐рдпрд╛

рдмреБрдзрд╡рд╛рд░, 28 рдЕрдкреНрд░реИрд▓, 2021 рдХреЛ рджреЛрдкрд╣рд░ 12:32 рдмрдЬреЗ рдореЛрд╣рдореНрдордж рд╕реБрдирд╕рд░рд╛ @ . * >
рд▓рд┐рдЦрд╛ рдерд╛:

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдХреНрд╡реЗрд░реА рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдПрдХреАрдХрд░рдг рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
URL рдореЗрдВ рдЖрдкрдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд╕рд╛рде-рд╕рд╛рде paramsред рдиреАрдЪреЗ рд╡рд╣ рдХреНрд░рд┐рдпрд╛ рдереА рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдереА

@ рдХреНрд░рд┐рдпрд╛ (рд╡рд┐рдзрд┐рдпрд╛рдБ = ['рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ'], рд╡рд┐рд╡рд░рдг = рдЧрд▓рдд)
рдбреАрдИрдПрдлрд╝ рдирд┐рд░реНрдпрд╛рдд (рд╕реНрд╡рдпрдВ, рдЕрдиреБрд░реЛрдз):
рдХреНрд╡реЗрд░реАрд╕реЗрдЯ = self.get_queryset ()
filtered_queryset = self.filter_queryset (рдХреНрд╡реЗрд░реАрд╕реЗрдЯ)

DRF рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░рдиреЗ рдпреЛрдЧреНрдп API рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп, рдЕрдиреБрд░реЛрдз
рдЬреЛ рднреЗрдЬрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛
/api/viewname/export/ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рд▓рд╛рдЗрдХ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
/api/viewname/export/?query_param_1=value1&?query_param_2=value2

рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд╕рд╛рде рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░рд╕реЗрдЯ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рд╡рд░реНрдЧ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ filtered_queryset . рдореЗрдВ рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреНрд╡реЗрд░реАрд╕реЗрдЯ рдорд┐рд▓реЗрдЧрд╛
рдЪрд░

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/carltongibson/django-filter/issues/967#issuecomment-828220562 ,
рдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AMD2QQXC6FGISRWTHRAGUSTTK62Y7ANCNFSM4FP6FMMQ
.

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

jwineinger picture jwineinger  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

blueyed picture blueyed  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

xtrinch picture xtrinch  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

loganknecht picture loganknecht  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lalzada picture lalzada  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ