Django-filter: рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреИрд╕реЗ django-filter django-pagination рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

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

рд╡реЗ рджреЛрдиреЛрдВ рдПрдХ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрд╛ред рдбреЙрдХреНрд╕ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░:

{% block content %}
    <form action="" method="get">
        {{ f.form.as_p }}
        <input type="submit" />
    </form>

    {% autopaginate f.qs 40 as filter_list %}

    {% for obj in filter_list %}
        {{ obj.name }} - ${{ obj.price }}<br />
    {% endfor %}

    {% paginate %}
{% endblock %}

рдХреБрдВрдЬреА рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкреЗрдЬрд┐рдиреЗрд╢рди рдХреЗ _as_ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

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

рдмрд╣реБрдд, рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреАред рдзрдиреНрдпрд╡рд╛рджред

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

рдмрд╣реБрдд, рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреАред рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдХрд┐ рдпрд╣ django-рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рднреА рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдбреАрдЬреЗрдВрдЧреЛ-рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЛ рдкреЗрдЬрд┐рдиреЗрд╢рди рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ 'as' рдХреАрд╡рд░реНрдб рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВ:

{% autosort f.qs as actionlog %}
{% autopaginate actionlog 30 %}

http://github.com/directeur/django-sorting/issues/#issue/4 рдкрд░ рдЕрдкрд╕реНрдЯреНрд░реАрдо

рдЬрдм рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

http://code.google.com/p/django-pagination/issues/detail?id=59#c0

рдпрд╣ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

django-pagination рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдЬрдм рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ, рдкреЗрдЬ 5 рдкрд░ рд╣реИрдВ рдФрд░ рдЖрдк рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлрд╝рд┐рд▓реНрдЯрд░ "рдкреЗрдЬ" GET рд╡реИрд░рд┐рдПрдмрд▓ рднреА рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЧрдП рдкреЗрдЬ рдореЗрдВ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреЗрдЬ 5 рдкрд░ рд╣реИрдВ, рдпрд╣ рдЧрд▓рдд рд╣реИ . рдХреНрдпрд╛ рдпреВрдЖрд░рдПрд▓ рд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ django-pagination рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ? рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ ...

рдПрдордбреАрдЧрд╛рд░реНрдЯ,

рдореИрдВрдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ jQuery рдФрд░ jQuery рдмреИрдХ рдмрдЯрди рдФрд░ рдХреНрд╡реЗрд░реА (рдмреАрдмреАрдХреНрдпреВ) рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдкреЗрдЬ рд╡реИрд░рд┐рдПрдмрд▓ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХреАред рджреЗрдЦреЗрдВ: http://benalman.com/code/projects/jquery-bbq/docs/files/jquery-ba-bbq-js.html

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript" src="{{ MEDIA_URL }}js/jquery.ba-bbq.min.js"></script>
<script type="text/javascript">
  // on page load complete
  $(function(){
    // force all filter links to return to page 1
    $('#changelist-filter a').querystring('page=1');
  });
</script>

рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ "рдкреЗрдЬ" рдХреЗ рдЧреЗрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ 1 рдкрд░ рдмрд╛рдзреНрдп рдХрд░рддрд╛ рд╣реИред

рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореЗрд░реЗ рд╕рднреА рдлрд╝рд┐рд▓реНрдЯрд░ "рдЪреЗрдВрдЬрд▓рд┐рд╕реНрдЯ-рдлрд╝рд┐рд▓реНрдЯрд░" рдХреА рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдПрдХ div рдХреЗ рднреАрддрд░ рд╕реНрдерд┐рдд рд▓рд┐рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдЕрдкрдиреЗ jQuery рдЪрдпрдирдХрд░реНрддрд╛ рдХреЛ рдЙрдкрдпреБрдХреНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред

рдЙрдореНрдореАрдж рд╣реИ рдпреЗ рдорджрдж рдХрд░реЗрдЧрд╛ред

рдПрдордбреАрдЧрд╛рд░реНрдЯ, рдЬреЛрдирд╛рдердиреИрдбрд▓рд░,

рдореИрдВрдиреЗ рдкреГрд╖реНрда рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдорд╕реНрдпрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ: рдмрд╕ 'рдкреГрд╖реНрда' рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░рд╕реЗрдЯ рдореЗрдВ рдкрд╛рд╕ рди рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЙрдХреНрд╕ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░:
def product_list (рдЕрдиреБрд░реЛрдз):
рдбреЗрдЯрд╛ = рдЕрдиреБрд░реЛрдзред рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдХреЙрдкреА ()
рдЕрдЧрд░ рдбреЗрдЯрд╛ рдореЗрдВ 'рдкреЗрдЬ':
рдбреЗрд▓ рдбреЗрдЯрд╛ ['рдкреЗрдЬ']
f = ProductFilter (рдбреЗрдЯрд╛, рдХреНрд╡реЗрд░реАрд╕реЗрдЯ = Product.objects.all ())
рд╡рд╛рдкрд╕реА render_to_response('my_app/template.html', {'filter': f})
рдорджрдж рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред

рдмрд╣реБрдд рд╕рд╛рдл рд╕рдорд╛рдзрд╛рди рд░рд┐рдЪрд░реНрдбрдмрд░рди, рдзрдиреНрдпрд╡рд╛рдж!

рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ django-pagination рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдкреИрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕рдорд╕реНрдпрд╛ рд╣реИ: рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд┐рд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИ? :-(
рдпрд╣ рдкрд╣рд▓рд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЙрдХреНрдпреВрдЯрд┐рд▓реНрд╕ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░рддреЗ рд╣реИрдВ (рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░)ред рдХреЛрдИ рд╕реБрдЭрд╛рд╡?

рд░рд┐рдЪрд░реНрдб, рдпрд╣ рдкрд╣рд▓рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕реНрдлрд┐рдВрдХреНрд╕ (http://sphinx.pocoo.org/) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЬрд┐рд╕ рдХреНрд╖рдг рдореИрдВ рдСрдЯреЛрдкреИрдЧрд┐рдиреЗрдЯ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ "рдСрдмреНрдЬреЗрдХреНрдЯ рдСрдл рдЯрд╛рдЗрдк 'рдлреВрдлрд┐рд▓реНрдЯрд░' рдореЗрдВ рдХреЛрдИ рд▓реЗрди () рдирд╣реАрдВ рд╣реИ" рдЯрд╛рдЗрдкрд░рд░ред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╕рдореГрджреНрдз рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕реЗ рд▓реВрдк рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ django-pagination рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВ рдХреИрд╕реЗ рдЗрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдзрдиреНрдпрд╡рд╛рдж!

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛, рдореБрдЭреЗ рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛рдпрд╛ рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ django-pagination рдФрд░ django-sorting рдХреЗ рд▓рд┐рдП github рд▓рд┐рдВрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рд╕рдлрд▓рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ :

TemplateSyntaxрддреНрд░реБрдЯрд┐ /рд╡рд┐рдЬреНрдЮрд╛рдкрди/рдЦреЛрдЬ/ рдкрд░
рд░реЗрдВрдбрд░ рдХрд░рддреЗ рд╕рдордп VariableDoesNotExist рдкрдХрдбрд╝рд╛ рдЧрдпрд╛: u'[{}, {\'csrf_token\' рдореЗрдВ рдХреБрдВрдЬреА [рд╕реЙрд░реНрдЯреЗрдб_рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕] рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╡рд┐рдлрд▓ ...

рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

    {% autosort filter.qs as sorted_objects %}
    {% autopaginate sorted_objects 10 as object_list %}

    {% for object in object_list %}
        {{ object }}
    {% endfor %}

    {% paginate %}  

    <ul>
        <li>{% anchor price "First Field" %}</li>
        <li>{% anchor surface "Other Field" %}</li>
    </ul>

рдзрдиреНрдпрд╡рд╛рдж !

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ django-sorting рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдЖрдкрдХреЛ рдХрд╛рдордпрд╛рдмреА рдорд┐рд▓реЗ!

рдирд╛рдпрдм

рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ django-pagination рдФрд░ django-sorting рдХреЗ рд▓рд┐рдП github рд▓рд┐рдВрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рд╕рдлрд▓рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ :

TemplateSyntaxрддреНрд░реБрдЯрд┐ /рд╡рд┐рдЬреНрдЮрд╛рдкрди/рдЦреЛрдЬ/ рдкрд░
рд░реЗрдВрдбрд░ рдХрд░рддреЗ рд╕рдордп VariableDoesNotExist рдкрдХрдбрд╝рд╛ рдЧрдпрд╛: u'[{}, {\'csrf_token\' рдореЗрдВ рдХреБрдВрдЬреА [рд╕реЙрд░реНрдЯреЗрдб_рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕] рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╡рд┐рдлрд▓ ...

рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

  {% autosort filter.qs as sorted_objects %}
  {% autopaginate sorted_objects 10 as object_list %}

  {% for object in object_list %}
      {{ object }}
  {% endfor %}

  {% paginate %}  

  <ul>
      <li>{% anchor price "First Field" %}</li>
      <li>{% anchor surface "Other Field" %}</li>
  </ul>

рдзрдиреНрдпрд╡рд╛рдж !

рддреЛ, рдпрд╣рд╛рдБ рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рдкреНрд░рд╢реНрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдкрд╛рдЗрдк рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ:

django-рдлрд╝рд┐рд▓реНрдЯрд░==0.5.3
рдбреАрдЬреЗрдВрдЧреЛ-рдкреЗрдЬрд┐рдиреЗрд╢рди == 1.0.7
-e git: //github.com/lukeman/django-sorting.git#egg =django_sorting

рдореЗрд░реЗ рдХрд╛рдВрдЯреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
https://github.com/camilonova/django-sorting

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреЗрдЬрд┐рдиреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ django-filter рдХреЗ рд╕рд╛рде рд╕реЙрд░реНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдореИрдВ рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╢реНрдп рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдпрджрд┐ рдореИрдВ рдЖрдкрдХрд╛ рдкреНрд░рд╢реНрди рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ: https://github.com/ouhouhsami/django-geoads/blob/master/geoads/views.py

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдореИрдВрдиреЗ django-sorter рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдкреВрд░реНрдг рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд▓рд┐рдЦрд╛, рдЬрд┐рд╕реЗ django-sorter рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: http://django-sorter.readthedocs.org/

рдЗрд╢реНрдпреВ рдЯреНрд░реИрдХрд░ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдХреЗ 2 рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╣реЛ рдЧрдпрд╛ рд╣реИред

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

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдХреЛрдИ рдЕрд░реНрде рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж!!!

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

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

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

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

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

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

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