0
def participant_specific_donation(self, participant):
    donations = Donation.objects.filter(participant = participant)

    helper = {}

    for donation in donations:
        ##helper['donation_date'] = donation.date
        helper['donation_amount'] = donation.amount
    return helper

def participant_specific(request, participant):
helper = RelayFunctions()
info = helper.participant_specific_donation(participant)
info1 = helper.participant_specific_milestone(participant)

data = [ 'participant_specific_donation' : info , 'participant_specific_milestone' : info1 ]
json_serializer = serializers.get_serializer("json")()
response = json_serializer.serialize(data, ensure_ascii=False)
return HttpResponse(response, mimetype="application/json")

エラー: 'dict' オブジェクトには属性 '_meta' がありません。これは、辞書の呼び出し方と関係がありますか? 2 つのオブジェクトを 1 つに結合したかったのです。次に、それを json に解析します。

これがトレースバックです。

Traceback:
 File "/home/vtrelayc/lib/python2.6/site-packages/django/core/handlers/base.py" in get_response
   111.                         response = callback(request, *callback_args, **callback_kwargs)
 File "/home/vtrelayc/projects/relay/relayapp/views.py" in participant_specific
   192.     response = json_serializer.serialize(data, ensure_ascii=False)
 File "/home/vtrelayc/lib/python2.6/site-packages/django/core/serializers/__init__.py" in serialize
  98.     s.serialize(queryset, **options)
File "/home/vtrelayc/lib/python2.6/site-packages/django/core/serializers/base.py" in serialize
  46.             concrete_model = obj._meta.concrete_model

Exception Type: AttributeError at /participants/specific/1/
Exception Value: 'dict' object has no attribute '_meta'

def participant_specific(request, participant):
helper = RelayFunctions()
info = helper.participant_specific_donation(participant)
info1 = helper.participant_specific_milestone(participant)
data = [ 'participant_specific_donation' : info , 'participant_specific_milestone' : info1 ]
json_serializer = serializers.get_serializer("json")()
response = json_serializer.serialize(data, ensure_ascii=False) ...
return HttpResponse(response, mimetype="application/json")
4

1 に答える 1

1

コード スニペットには 2 つの問題があります。

まず、ここでの論理的な問題:

for donation in donations:
    ##helper['donation_date'] = donation.date
    helper['donation_amount'] = donation.amount

donations寄付に複数の要素がある場合、 をループして毎回 に値を代入しているため、リストの最後の要素のみになりますhelper

示されているように行うことができる合計金額を計算したいと思います:

helper['donation_amount'] += donation.amount

第二に、行:

data = [ 
    'participant_specific_donation': info,
    'participant_specific_milestone': info1 
]

構文エラーが発生します。

ここに辞書が必要なようです。辞書を初期化する正しい方法は、{ }中かっこを使用することです。

data = { 
    'participant_specific_donation': info, 
    'participant_specific_milestone': info1
}

すべての寄付を 1 か所にまとめたい場合は、最初にリストを作成できます。

donation_amount = [donation for donation in donations]

そしてそれをヘルパー辞書に割り当てます:

helper['donation_amount'] = donation_amount
于 2013-02-10T02:33:37.160 に答える