2016-04-07 5 views
0

Im Moment habe ich mehrere' Photo'-Objekte auf einer Seitenvorlage angezeigt.Hinzufügen von 'vote'-Buttons zu django-Objekten

Das Photo Modell hat ein Feld ‚Score‘, die einen Standardwert von 0 hat

ich kämpfe, um einen Weg zu finden, zwei Schaltflächen hinzufügen („nach oben“/„nach unten“) in der Vorlage im Zusammenhang mit Jedes Objekt, also wenn die Schaltfläche "nach oben" angeklickt wird, addiert 1 zu der bestimmten Fotoobjekte-Punktzahl, oder wenn "runter" angeklickt wird, subtrahiert es 1 von der Punktzahl und nachdem die Schaltfläche angeklickt wurde, aktualisiert es den Wert der Fotos in der Datenbank . Hier

ist ein Beispiel dafür, was ich meine:

enter image description here

Ich habe sah in mit ModelForms und wurde durch die django Tutorial auf Formen, aber ich habe Schwierigkeiten, herauszufinden, wie es zu tun.

+0

Ist das Problem, dass das Hoch/Runter funktionieren soll, ohne auf eine andere Ansicht umzuleiten? Wenn ja, müssen Sie Javascript verwenden, um Ajax-Anrufe zu tätigen. Ist das, was du fragst? – dkarchmer

Antwort

2

Es sollte sehr einfach sein. Die Schaltfläche "Hoch/Runter" könnte nur ein Link sein, der mit Ihrer Ansichtsmethode mit der Foto-ID in der URL verknüpft ist. In Ihrer Ansicht Methode nehmen Sie die Foto-ID und suchen Sie nach entsprechenden Foto, dann aktualisieren Sie die Punktzahl.

ich hier ein einfaches Beispiel zu geben, müssen Sie django tutorial auf lesen, wie jedes Detail funktioniert es abzuschließen:

template.html:

{% for photo in photos %} 
    <a href="upvote/{{ photo.id }}">up</a> 
{% endfor %} 

urls.py

url(r'^upvote/(?P<photo_id>[0-9]+)/$', views.upvote, name='upvote'), 

views.py

def upvote(request, photo_id): 
    photo = Photo.objects.get(pk=photo_id) 
    photo.score += 1 
    photo.save() 
    return HttpResponse('your-photo-list-view') 
+0

Das hat perfekt funktioniert danke. Ich wusste nicht, dass es aus irgendeinem Grund so geradlinig sein könnte, ich denke, ich habe es übertrieben! – user1825241