2013-02-10 31 views
8
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") 

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/base.py" in serialize 
    46.    concrete_model = obj._meta.concrete_model 

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

Errore: 'str' oggetto non ha attributo '_meta'STR non ha alcun attributo '_meta'

Stiamo cercando di analizzare il dizionario, ma dice che è una stringa? È a causa degli oggetti multipli in un dizionario?

risposta

11

json_serializer.serialize deve essere utilizzato con un queryset. Maggiori informazioni here.

Si dovrebbe essere in grado di ottenere lo stesso con questo:

import json 
data = json.dumps({ 'participant_specific_donation' : info , 'participant_specific_milestone' : info1 }) 

Spero che questo aiuti.

+1

json.dumps non funziona bene con django querysets – Coderaemon

+0

Link is 404'ing ... piuttosto post un po 'di codice insieme al link – surfer190

6

I serializzatori di Django sono solo per la serializzazione di QuerySet s, ma lo si sta passando a dict. Se vuoi serializzare un dict, forse stai cercando Python's built-in json module.

+0

Grazie icktoofay! Ha funzionato! – Scott

+0

Questa è una grande, semplice risposta. Grazie @icktoofay. –

Problemi correlati