2012-03-30 8 views
0

in meinen Ansichten Ich bin eine Abfrage ausgeführt, die Informationen basierend auf vorherigen Kwargs extrahiert.django json Abfrage in der Shell arbeiten, aber nicht Ansichten

Probe paypaladaptive debug.request Eintrag

{"returnUrl": "http://localhost:5000/paypal/return/pre/30/75f946df1bef45598cd42c45ff9e5e1c/", "maxTotalAmountOfAllPayments": "100.00", "maxNumberOfPaymentsPerPeriod": 1, "startingDate": "2012-03-30T07:59:09.447420", "maxNumberOfPayments": 1, "currencyCode": "USD", "endingDate": "2012-06-28T12:59:09.447158", "project": 585, "ipnNotificationUrl": "http://localhost:5000/paypal/ipn/30/75f946df1bef45598cd42c45ff9e5e1c/", "cancelUrl": "http://localhost:5000/paypal/cancel/pre/30/", "pinType": "NOT_REQUIRED", "requestEnvelope": {"errorLanguage": "en_US"}} 

from django.utils import simplejson as json 
from paypaladaptive.models import Preapproval 

@login_required 
@require_GET 
def cancel_preapproval_bulk(request, project_id): 
    preapprovals_list = [] 
    preapprovals = Preapproval.objects.all().exclude(preapproval_key=None).exclude(status='canceled').exclude(status='used') 
    for obj in preapprovals: 
     json_object = json.loads(obj.debug_request) 
     if json_object['project'] == project_id: 
      preapprovals_list.append(obj) 

    print preapprovals_list 

Wenn diese Ausführung durch django Lauf Shell eine Liste erhalten, erzeugte nach dem args, dh die Projekt-ID.

Wenn dies in einem normalen django laufen sieht eine leere Liste zurück ...

Jede Idee, warum?

Antwort

0

Sie sollten sicherstellen, dass Sie PreApproval importieren und auch die Verwendung von values auf einem QuerySet untersuchen, damit Sie es als Wörterbuch verwenden können.

{"returnUrl": "http://localhost:5000/paypal/return/pre/30/75f946df1bef45598cd42c45ff9e5e1c/", "maxTotalAmountOfAllPayments": "100.00", "maxNumberOfPaymentsPerPeriod": 1, "startingDate": "2012-03-30T07:59:09.447420", "maxNumberOfPayments": 1, "currencyCode": "USD", "endingDate": "2012-06-28T12:59:09.447158", "project": 585, "ipnNotificationUrl": "http://localhost:5000/paypal/ipn/30/75f946df1bef45598cd42c45ff9e5e1c/", "cancelUrl": "http://localhost:5000/paypal/cancel/pre/30/", "pinType": "NOT_REQUIRED", "requestEnvelope": {"errorLanguage": "en_US"}} 

from project.app.model import Preapproval 

@login_required 
@require_GET 
def cancel_preapproval_bulk(request, project_id): 
    preapprovals_list = [] 
    preapprovals = Preapproval.objects.all().exclude(preapproval_key=None).exclude(status='canceled').exclude(status='used').values() 
    for obj in preapprovals: 
     if obj['project'] == project_id: 
      preapprovals_list.append(obj) 

    print preapprovals_list 

EDIT: Sollte haben die Seite facepalm aktualisiert. Trotzdem sollten Sie nach Werten suchen().

+0

Scheint nicht mit den in der debug_request verschachtelten Elemente zu arbeiten, wenn Sie obj ['status'] ausführen, funktioniert es, aber nicht obj ['project'], da es in obj ['debug_request'] liegt, so wie Ich gehe eine Ebene tiefer? – ApPeL

+0

Ich habe das noch nie versucht, aber die Dokumentation sagt: "Gibt eine ValuesQuerySet - eine QuerySet-Unterklasse zurück, die Wörterbücher zurückgibt, wenn sie als iterierbare Objekte und nicht als Instanzobjekte verwendet werden." also denke ich sollte es funktionieren ... – olofom

Verwandte Themen