Django dynamischer Filter im Template

Gast #5505662
Lesenswert?

Hallo,

ich habe ein bestehendes Django Projekt und möchte im Template diverse 
Filter nutzen. Dazu such ich nach ein paar Ideen, wie man das am 
Sinnvollsten machen kann.

Vorzugsweise würde ich das gerne mit so einem Toggle Slider machen wie 
hier:

https://www.w3schools.com/howto/howto_css_switch.asp

In der Django Datenbank habe ich ein Boleanfield "is_favorite" das der 
Toggle Slider nutzen soll.


Also, wenn der Toggle Slider aktiviert ist, dann sollen alle 
aufgelisteten Eintrage die nicht "1" in der Datenbank haben 
verschiwinden. Allerdings stehe ich gerade auf der Leitung wie ich das 
am besten hinbekomme.
1
models.py
2
class Request_Review(models.Model):
3
    user = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
4
    request_date = models.DateTimeField(auto_now_add=True)
5
    request_user = models.CharField(default='', blank=True, max_length=100)
6
    is_favorite = models.BooleanField(default=False)
1
urls.py
2
urlpatterns = [
3
    url(r'^$',  views.home, name='home'),
1
views.py
2
def home(request, album_id):
3
    user = request.user
4
     albums = Request_Review.objects.filter(user=request.user).order_by('-request_date')[:24]
5
    albums_search = Request_Review.objects.filter().order_by('-request_date')
6
    query = request.GET.get("q")
7
    if query:
8
        albums = albums_search.filter(
9
            Q(request_user__icontains=query) |
10
            Q(request_type__icontains=query) 
11
        ).distinct()
12

13
        return render(request, 'request_review.html', {
14
            'albums': albums,
15
            'form': form
16
        })
17
    else:
18
        return render(request, 'request_review.html', {
19
            'albums': albums,
20
            'form': form
21
        })

Nur wie bekomme ich das zusammen hin, dass mann das über den Slider 
nutzen kann?

die html dazu:
1
<div class="albums-container container-fluid">
2
   <!-- Albums -->
3
   <div class="row">
4
      {% if albums %}
5
      {% for album in albums %}
6

7
      <div class="col-sm-4 col-lg-3">
8
         <div class="review">
9
            <div class="review-body">
10
               <table width="100%">
11
                  <tbody>
12
                     <tr>
13
                        <td class="alnleft">
14
                         {{album.id}}</td>
15
                        <td class="alnright">
16
                        </td>
17
                     </tr>
18
                  </tbody>
19
               </table>         
20
                <br>
21
               <p class="alnsmall">{{album.request_user}}</p>
22
               <p class="alnsmall">{{album.request_date|date:"Y-m-d H:i"}}</p>
23
            </div>
24
         </div>
25
         <br>
26
      </div>
27
      {% endfor %}
28
      {% else %}
29
      {% endif %}
30
   </div>
31
</div>
32
</div>

P.S.: es stehen noch ein paar Daten mehr mit in im Template, habe das 
gekürzt, dass es nicht zu lang wird.
Gast #5506763
Lesenswert?

Ein bischen bin ich weiter gekommen...

Ich habe im Template den Toggle Slider eingebaut und über ein script 
öffne ich eine URL Erweiterung.
1
<label class="switch">
2
     <input type="checkbox">
3

4
  <span class="slider round" ></span>
5
</label>
6

7
<script>
8
   $('input[type=checkbox]').change( function() {
9
   if($(this).prop("checked") == true){
10
       window.open("/?favorite=On","_self")
11
}else{
12
    window.open("/?favorite=Off","_self")
13
     ;
14
   }
15
});
16

17
</script>


Soweit geht das so halbwegs.

Jetzt allerdings ein neues Problem. Wenn der Toggle Slider angeklickt 
wurde, dann ist zwar der Filter richtig gesetzt und im Template wird das 
angezeigt was es auch sol, aber der Slider ist wieder auf dem 
unangeklicket Ausgangspunkt.

Gibt es eine Möglichkeit das ich den Filter hierüber wieder deaktivieren 
kann?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren