Django-filter: Dokumentieren Sie, wie django-filter mit django-pagination arbeitet

Erstellt am 13. Aug. 2009  ·  20Kommentare  ·  Quelle: carltongibson/django-filter

Sie arbeiten beide gut zusammen, ich habe eine Weile gebraucht, um es auszuprobieren. Basierend auf dem Beispiel in den Dokumenten:

{% 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 %}

Der Schlüssel ist, dass Sie das _as_-Argument der Paginierung verwenden müssen.

Hilfreichster Kommentar

Sehr, sehr nützlich. Dankeschön.

Alle 20 Kommentare

Sehr, sehr nützlich. Dankeschön.

Ich würde vorschlagen, auch zu dokumentieren, wie dies mit Django-Sorting funktioniert. Leider muss die Django-Sortierung vor der Paginierung erfolgen und unterstützt das Schlüsselwort 'as' nicht, daher sind wir _nicht_ in der Lage, so etwas zu tun:

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

Vorgelagert unter http://github.com/directeur/django-sorting/issues/#issue/4 hinterlegt.

Bekomme dieses Problem, wenn ich das oben genannte versuche.

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

Irgendwelche Ideen, was es sein könnte?

Es gibt ein Problem mit der Django-Paginierung: Wenn Sie sich beispielsweise auf Seite 5 befinden und einen Filter anwenden, übergibt der Filter auch die GET-Variable "page", sodass Sie auf der gefilterten Seite bereits auf Seite 5 sind, das ist falsch . Gibt es eine Möglichkeit, die Variable, die django-pagination verwendet, wenn ein Filter angewendet wird, von der URL auszuschließen? Hoffe das macht Sinn...

mdgart,

Ich habe das Problem mit den Seitenvariablen auf dem Client mit jQuery und der Bibliothek jQuery Back Button & Query (BBQ) gelöst. Siehe: 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>

Wenn der Benutzer auf einen Filterlink klickt, erzwingt Javascript den Get-Parameter von "page" auf 1.

In meinem Beispiel werden alle meine Filter als Links angezeigt, die sich in einem div mit der ID "changelist-filter" befinden. Sie müssen Ihren jQuery-Selektor entsprechend ändern.

Hoffe das hilft.

mdgart, jonathonadler,

Ich habe das Problem mit den Seitenvariablen auf eine etwas andere Weise gelöst, die es vermeidet, sich auf Javascript zu verlassen: Übergeben Sie einfach nicht den Parameter 'page' an das FilterSet. Zum Beispiel basierend auf dem Beispiel in den Dokumenten:
def product_list(Anfrage):
data = request.GET.copy()
wenn 'Seite' in Daten:
Daten löschen['Seite']
f = ProductFilter(data, queryset=Product.objects.all())
return render_to_response('my_app/template.html', {'filter': f})
Hoffe zu helfen.

Sehr ordentliche Lösung richardbarran, danke!

Vielen Dank. Ich dachte daran, die Dokumentation zu patchen, um über Django-Paginierung zu sprechen, aber ich habe ein kleines Problem: In welchem ​​Format liegt die Dokumentation vor? :-(
Es ist nicht das erste, wie docutils sich darüber beschwert (zumindest auf meinem Computer). Irgendwelche Vorschläge?

Richard, es ist zuerst, muss aber mit sphinx (http://sphinx.pocoo.org/) verarbeitet werden.

In dem Moment, in dem ich das Autopaginate-Tag verwende, erhalte ich den Typfehler "Objekt vom Typ 'fooFilter' has no len()". Ich bin sicher, dass ich das ergebbare Ergebnis habe, weil ich es durchlaufen und die Objekte anzeigen kann, ohne die Django-Paginierung zu verwenden. Wie kann ich das beheben? Vielen Dank!

Super, hat mir viel Zeit gespart danke.

Könnten Sie mir Github-Links zu Django-Paginierung und Django-Sorting geben, die zusammenarbeiten, ich habe einige dieser Repositories ohne Erfolg ausprobiert. Ich bekomme ein :

TemplateSyntaxError unter /ads/search/
VariableDoesNotExist beim Rendern abgefangen: Fehler beim Suchen nach dem Schlüssel [sorted_objects] in u'[{}, {\'csrf_token\' ...

mit dieser Vorlage

    {% 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>

Vielen Dank !

Entschuldigung, ich habe Django-Sorting nicht verwendet, kann also nicht wirklich helfen.

Viel Glück!

NB

Könnten Sie mir Github-Links zu Django-Paginierung und Django-Sorting geben, die zusammenarbeiten, ich habe einige dieser Repositories ohne Erfolg ausprobiert. Ich bekomme ein :

TemplateSyntaxError unter /ads/search/
VariableDoesNotExist beim Rendern abgefangen: Fehler beim Suchen nach dem Schlüssel [sorted_objects] in u'[{}, {\'csrf_token\' ...

mit dieser Vorlage

  {% 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>

Vielen Dank !

Hier ist ein Beispiel für funktionierende Pip-Anforderungen für meine vorherige Frage:

Django-Filter==0.5.3
django-pagination==1.0.7
-e git://github.com/lukeman/django-sorting.git#egg =django_sorting

Versuchen Sie, meine Gabel zu verwenden:
https://github.com/camilonova/django-sorting

Weiß jemand, ob die Verwendung von Paginierung und Sortierung mit Django-Filter mit generischen Ansichten möglich ist? Ich sehe aus diesen Beispielen, dass die generische Ansichtsmethode nicht verwendet wird.

Wenn ich deine Frage verstehe, ist es möglich, ich verwende sie hier: https://github.com/ouhouhsami/django-geoads/blob/master/geoads/views.py

Falls es jemand interessiert, ich habe einen viel vollständigeren Ersatz für django-sorting geschrieben, genannt django-sorter: http://django-sorter.readthedocs.org/

Um den Issue Tracker in den Griff zu bekommen, werde ich diesen schließen. Der letzte Kommentar ist mehr als 2 Jahre her.

Wenn jemand eine Pull-Anfrage senden möchte, die die Dokumentation aktualisiert, die die Integration mit aktuellen Paginierungs- / Sortierlösungen zeigt, würde ich mich sehr freuen, dies zu überprüfen, aber ansonsten werde ich beim nächsten Mal darauf zurückkommen _IRL_.

Ich hoffe das ergibt Sinn.

Vielen Dank!!!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen