Nehmen Sie sich etwas Zeit, um einige Django-Dokumente zu lesen, da sie sich als sehr wertvoll erweisen können (nicht zu vergessen, dass sie für jede verfügbare Version sehr sauber und gut geschrieben sind). Ich würde mich auf Working With Forms
konzentrieren Kurz gesagt, übergeben Sie den Monat von Ihrer Django-Vorlage (vielleicht über Ajax oder ein einfaches HTML-Formular POST), zu Ihrer Ansicht, und verwenden Sie Ihre Ansicht-Funktion, um die POST-Daten zu erhalten das in Ihrem Abfrage-Set.
Es ist schwer, eine gute, gründliche Antwort zu geben, weil es verschiedene Möglichkeiten gibt, dies zu tun. Willst du AJAX? Einfache Form mit Seiten-Reload, etc?
Okay, hier, im Detail, ist, wie ich normalerweise eine POST-Anfrage behandeln. Dies ist nicht getestet Code, es ist nur Pseudo-Code, aber sollte arbeiten so weit ich kann sagen, abgesehen von ein paar kleinere Tippfehler wahrscheinlich. ABER, es sollte dir eine Idee geben, wie man mit Ajax-Anfragen in Django umgeht.
Dies ist ziemlich 101 und dauert einige Zeit, um die Dokumente zu lesen und durchlaufen einige der frühen Projekte deckt ein diese Konzepte viel ich, so dass meine Vertiefung ist nicht wirklich wertvoll für SO-Leser.
views.py
class change_date_form(forms.Form):
new_date = forms.DateField()
def change_transaction_date(request):
#Do some checks to make sure user is authorized to do this
current_user = ...
customer_data = []
if request.method == 'POST':
form = change_date_form(request.POST, request.FILES)
if form.is_valid():
change_date = form.cleaned_data.get('new_date')
objects = Transaction.objects.filter(user=current_user, date__month=change_date)
for i in objects:
customer_data.append(objects.name)
response_data = json.dumps(customer_data)
return HttpResponse(response_data, content_type='application/json')
urls.py
...
url(r'^change_date_view/', 'module.views.change_transaction_date'),
JQuery:
$('button_handler').on('click', function() {
var new_date_value = $(date_field_selector).val()
$.ajax({
url: "/change_date_view/",
type: "POST",
data: {
new_date: button_handler,
},
success:function(data) {
//build your html via javascript with response data
}
})
})
Der einzige Ort, dies zu tun in der Ansicht ist, sein unklar, was genau das Problem Sie haben – Sayse
@Sayse Ich weiß nur nicht, wie Sie den Monat ändern, durch den Transaktionen gefiltert werden und machen Django zeigen thi s Transaktionen in gerenderten Vorlagen – Teryuu
Ich habe meine Antwort bearbeitet, um Ihnen einige Details über die Handhabung von django ajax zu geben. – rob