Django-filter: рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: __init__() рдХреЛ рдПрдХ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдХреАрд╡рд░реНрдб рддрд░реНрдХ 'рдирд╛рдо' рдорд┐рд▓рд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рдирд╡ре░ 2017  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: carltongibson/django-filter

рдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

release_year__gt = django_filters.NumberFilter(name='release_date', lookup_expr='year__gt')

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА:
TypeError: __init__() got an unexpected keyword argument 'name'

рдЬрдм рдореИрдВ рдХреЛрдб рджреЗрдЦрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ 'рдирд╛рдо' 'field_name' рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рдбреЙрдХреНрдЯрд░ рдкреБрд░рд╛рдирд╛ рд╣реИ, рд╣реИ рдирд╛ ??

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

class MyFilter(django_filters.FilterSet):
    class Meta:
        model = FileEvent
        fields = ['file_name', ]

рдКрдкрд░ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

class MyFilter(django_filters.FilterSet):
    class Meta:
        model = FileEvent
        fields = {'file_name' : ['icontains'] }

рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рд╣реИред рдХреНрдпреВрдИ рдПрд╕рдХреНрдпреВрдПрд▓ рдХрд╛ рдХреЛрдИ рдмрдпрд╛рди рдирд╣реАрдВ рд╣реИ like %somevalue% , рдХреНрдпреЛрдВ?

рдзрдиреНрдпрд╡рд╛рдж,
рдХреНрд░рд┐рд╕

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

рдирдорд╕реНрддреЗ @zhangqunshi , рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк 2.0.0.dev1 рдкреВрд░реНрд╡-рд░рд┐рд▓реАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, name рдмрди рдЧрдпрд╛ рд╣реИ field_name ред рдЗрд╕реЗ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЬреЛ рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░реА-рд░рд┐рд▓реАрдЬрд╝ рдХреНрдпреЛрдВ рд╣реИ)ред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЙрдбрд▓ рдХреЛ рджреЗрдЦреЗ рдмрд┐рдирд╛ FileEvent рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдЬрдм рдЖрдк рдирд┐рдореНрди рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?

FileEvent.objects.filter(file_name__icontains='foo')

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

рдирдорд╕реНрддреЗ @zhangqunshi , рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк 2.0.0.dev1 рдкреВрд░реНрд╡-рд░рд┐рд▓реАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, name рдмрди рдЧрдпрд╛ рд╣реИ field_name ред рдЗрд╕реЗ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЬреЛ рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░реА-рд░рд┐рд▓реАрдЬрд╝ рдХреНрдпреЛрдВ рд╣реИ)ред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЙрдбрд▓ рдХреЛ рджреЗрдЦреЗ рдмрд┐рдирд╛ FileEvent рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдЬрдм рдЖрдк рдирд┐рдореНрди рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?

FileEvent.objects.filter(file_name__icontains='foo')

FileEvent рд╕рд░рд▓ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ report_id, file_name рдФрд░ event_time рд╣реИред рдЬрдм рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

FileEvent.objects.filter(file_name__icontains='foo')

рдпрд╣ рдПрд╕рдХреНрдпреВрдПрд▓ рдмрди рдЬрд╛рдПрдЧрд╛:

select * from file_event where file_name like '%foo%'

рдХреЛрдб рдХреЗ рд▓рд┐рдП:

class MyFilter(django_filters.FilterSet):
    class Meta:
        model = FileEvent
        fields = ['file_name', ]

рдпрд╣ рдПрд╕рдХреНрдпреВрдПрд▓ рдмрди рдЬрд╛рдПрдЧрд╛:

select * from file_event where file_name ='foo'

рдХреЛрдб рдХреЗ рд▓рд┐рдП:

class MyFilter(django_filters.FilterSet):
    class Meta:
        model = FileEvent
        fields = {'file_name' : ['icontains'] }

рдпрд╣ рдПрд╕рдХреНрдпреВрдПрд▓ рдмрди рдЬрд╛рдПрдЧрд╛:

select * from file_event

рдХреНрд╡реЗрд░реАрд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб BTW рд╣реИ:

    filter = MyFilter(request.GET,
                               queryset=FileEvent.objects.values().filter(report_id=1).order_by(
                                   '-event_time'))
   print(filter.qs)

рдФрд░ рдореБрдЭреЗ рдбреЙрдХреНрдЯрд░ рд╕реЗ рдХреЛрдИ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣реА рд╣реИ, рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╢реНрдп рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреЛрдб рджреЗрдЦрддрд╛ рд╣реВрдВ, рдФрд░ рдмреЗрд╕рдлрд┐рд▓реНрдЯрд░рд╕реЗрдЯ рдореЗрдВ 'qs' рдлрд╝реАрд▓реНрдб рдвреВрдВрдврддрд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЕрдм рдореИрдВ рдХреЛрдб рдХреЛ рдЗрд╕рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реВрдВ:

class MyFilter(django_filters.FilterSet):
    file_name = django_filters.CharFilter(lookup_expr='icontains')

    class Meta:
        model = FileEvent
        fields = ['file_name',]

рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдПрд╕рдХреНрдпреВрдПрд▓ like '%foo%'

@zhangqunshi , рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдЖрдк рдЧрд▓рдд

/file-events?file_name__icontains=foo

рдЖрдк рд╕рд╣реА рд╣реИрдВ, рдореИрдВ рдпреВрдЖрд░рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ: /file-events?file_name=foo
рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ file_name рдлрд╝реАрд▓реНрдб рдХреЛ icontains рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рд╛рдВред рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдЙрд▓реНрдЯрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░рд┐рд╡рд░реНрддрди рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдХрдИ рдлрд┐рд▓реНрдЯрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрдХреЛрд╢ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,

class MyFilter(django_filters.FilterSet):
    class Meta:
        model = FileEvent
        fields = {'file_name': ['icontains', 'istartswith', 'iendswith',]}

рдпрд╣ рдЖрдкрдХреЛ /file-events?file_name__istarswith=foo&file_name__iendswith=log рдЬреИрд╕реА рдХреНрд╡реЗрд░реА рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ

рдареАрдХ рд╣реИ, рдореБрдЭреЗ рдорд┐рд▓ рдЧрдпрд╛, рдФрд░ рдХреЛрдб ['icontains', 'istartswith', 'iendswith',] рд╕рд┐рд░реНрдл рдПрдХ рд╕рдорд░реНрдерд┐рдд рдХреНрд╡реЗрд░реА рдкреНрд░рдХрд╛рд░ рд╕реВрдЪреА рд╣реИред рдпрджрд┐ рдХреНрд╡реЗрд░реА рд╕реВрдЪреА рдХреЗ рдХрд┐рд╕реА рднреА рдЖрдЗрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рддреЛ django-filter рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрдЧрд╛ред

рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж :-)

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

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

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

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

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

Alexx-G picture Alexx-G  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

chromakey picture chromakey  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ