Django ListView la personnalisation de queryset

Espérons que cela devrait être simple pour m'aider avec.

J'ai une page avec un menu déroulant contenant les trois éléments:

<form method="GET">

    <select name="browse">

        <option>Cats</option>

        <option>Dogs</option>

        <option>Worms</option>

    </select>

 <input type="submit" value="Submit" />

</form>

<!-- Output table -->

  <table id="myTable">

      <thead>
          <tr>
            <th>Name</th>
            <th>Colour</th>
          </tr>
      </thead>

      <tbody>
      {% for object in object_list %}
          <tr>
            <td>{{ object.name }}</td>
            <td>{{ object.colour }}</td>
          </tr>
      {% endfor %}
      </tbody>

  </table>

<!-- Pagination controls -->

<div class="pagination">
    <span class="page-links">
        {% if page_obj.has_previous %}
            <a href="?page={{ page_obj.previous_page_number }}">previous</a>
        {% endif %}
        <span class="page-current">
            Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
        </span>
        {% if page_obj.has_next %}
            <a href="?page={{ page_obj.next_page_number }}">next</a>
        {% endif %}
    </span>
</div>

Lorsque l'utilisateur sélectionne un élément et frappe les soumettre, ils ont donné les résultats dans un tableau comme celui généré par le générique ListView:

class Browse(generic.ListView):
    template_name = 'app/browse.html'
    paginate_by = 25

    def get_queryset(self):
        queryset = Cats.objects.all()
        if self.request.GET.get("browse"):
            selection = self.request.GET.get("browse")
            if selection == "Cats":
                queryset = Cats.objects.all()
            elif selection == "Dogs":
                queryset = Dogs.objects.all()
            elif selection == "Worms":
                queryset = Worms.objects.all()
            else:
                queryset = Cats.objects.all()
        return queryset

Cependant, lorsque je tente de tourner une page en utilisant la pagination des contrôles, le queryset réinitialise le premier élément (par défaut) les Chats, parce que (je pense) les données du formulaire est réinitialisé.

Une idée de comment contourner ce problème?

Merci!

PS: Ah oui, sur cette note, est-il possible de définir le queryset none pour commencer? Bien obligé!

Mise à JOUR: Lorsque j'utilise la pagination sur les Chats queryset, il fonctionne très bien si le bug n'est affichée sur les deux autres ensembles.

Avez-vous une demande ?? http://blah/?browse=Worms ?
Oui. Il ressemble à ceci: bla/parcourir/?parcourir=Worms
Depuis ce qui se passe quand vous allez à la page suivante, vous ne pensez pas que vous devez montrer le peu de le modèle qui rend les liens pour la page suivante, vous avez obligeamment édité?
Salut Daniel, vous avez raison bien sûr! Un jour je vais apprendre, mais pour l'instant j'ai mis à jour ma question avec le html de la pagination des contrôles. J'espère que cette aide.

OriginalL'auteur Sirrah | 2014-04-07