Reputation: 4344
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")
Error: 'dict' object has no attribute '_meta' Does this have to do with how I call the dictionary? I wanted to combine two objects into an one. Then parse it to json.
Here's the traceback.
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")
Upvotes: 0
Views: 11596
Reputation: 4114
There are two problems that I see in the code snippet.
First, logical issue here :
for donation in donations:
##helper['donation_date'] = donation.date
helper['donation_amount'] = donation.amount
If donations has multiple elements then you will end up with only the last element in the list, as you are looping over the donations
and assigning the value every time to helper
.
I think you want to calculate the total amount, which you can do as shown :
helper['donation_amount'] += donation.amount
Second, the line :
data = [
'participant_specific_donation': info,
'participant_specific_milestone': info1
]
will give you a syntax error.
It appears that you need a dictionary over here. The correct way to intialize a dictionary is by using the { }
braces :
data = {
'participant_specific_donation': info,
'participant_specific_milestone': info1
}
If you want all the donations in a single place, you can make a list first :
donation_amount = [donation for donation in donations]
and then assign it to the helper dictionary :
helper['donation_amount'] = donation_amount
Upvotes: 1