2013-02-10 5 views
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' Это связано с тем, как я называю словарь? Я хотел объединить два объекта в один. Затем разобрать его на json.'dict' объект не имеет атрибута '_meta'

Это трассировка.

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") 
+0

Линия 'data = [...' даст синтаксическую ошибку. – Dave

+1

Это настоящий код? data = ['foo': bar] выглядит странно. Это массив или диктофон? –

+0

Можете ли вы разместить точную трассировку и код вокруг местоположения, на который ссылается трассировка? – dm03514

ответ

1

Есть две проблемы, которые я вижу в фрагменте кода.

Во-первых, логический вопрос здесь:

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 
} 

Если вы хотите, чтобы все пожертвования в одном месте, вы можете сделать список первым:

donation_amount = [donation for donation in donations] 

и затем назначьте его в словарь-помощник:

helper['donation_amount'] = donation_amount 
+0

Спасибо AshRj !! Создание словаря работает, но я хочу, чтобы каждый элемент в «пожертвованиях». Поэтому я бы сделал массив в словаре для этого? – Scott

+0

@Scott Посмотреть мое редактирование – asheeshr

+0

Я знаю, что это 2 года, но вы имеете в виду 'donation_amounts = [donation.amount для пожертвований в пожертвованиях]'? Ваше понимание в письменном виде не делает ничего, кроме как сделать копию «пожертвований». –

Смежные вопросы