0

在我看来,我正在运行一个查询,该查询根据之前传递的 kwargs 提取信息。

示例 paypaladaptive debug.request 条目

{"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

当通过 django shell 运行这个执行时,你会得到一个根据传递的 args 生成的列表,即项目 ID。

在普通的 django 视图中运行它时,它返回一个空列表......

知道为什么吗?

4

1 回答 1

0

您应该确保您正在导入 Preapproval,并查看 QuerySet 上的使用,以便您可以将其用作字典。

{"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

编辑:应该刷新页面facepalm。不过,您应该查看 values()。

于 2012-03-30T13:55:52.800 回答