Sérialiser le queryset dans le cadre de repos de Django
Je suis en train de sérialiser une collection d'objets. J'ai de définir le point de vue suivant la méthode:
@csrf_exempt
def venue_list(request, user_id):
"""
Check that the user is requesting his own venues.
"""
profile = get_profile_for_user_if_match(request.user, user_id)
if profile is None:
return HttpResponse(status=status.HTTP_401_UNAUTHORIZED)
venues = profile.venue_set.all()
serializer = VenueSerializer(venues)
return JSONResponse(serializer.data)
Il reçoit un user_id
paramètre qui est utilisé pour déterminer si l'utilisateur a les autorisations nécessaires pour accéder aux données, puis il devient l'ensemble de restituer des objets, mais il ne fonctionne pas.
C'est d'essayer d'arranger le jeu directement, au lieu de l'objet à l'intérieur, de sorte que son lancer cette traceback:
Traceback:
File "/Users/mariopersonal/Documents/dev/offers/project/offers/venv/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/mariopersonal/Documents/dev/offers/project/offers/venv/lib/python2.7/site-packages/django/views/decorators/csrf.py" in wrapped_view
57. return view_func(*args, **kwargs)
File "/Users/mariopersonal/Documents/dev/offers/project/offers/wsgi/openshift/business/restful/views/venueViews.py" in venue_list
22. return JSONResponse(serializer.data)
File "/Users/mariopersonal/Documents/dev/offers/project/offers/venv/lib/python2.7/site-packages/rest_framework/serializers.py" in data
572. self._data = self.to_native(obj)
File "/Users/mariopersonal/Documents/dev/offers/project/offers/venv/lib/python2.7/site-packages/rest_framework/serializers.py" in to_native
351. value = field.field_to_native(obj, field_name)
File "/Users/mariopersonal/Documents/dev/offers/project/offers/venv/lib/python2.7/site-packages/rest_framework/fields.py" in field_to_native
336. return super(WritableField, self).field_to_native(obj, field_name)
File "/Users/mariopersonal/Documents/dev/offers/project/offers/venv/lib/python2.7/site-packages/rest_framework/fields.py" in field_to_native
207. value = get_component(value, component)
File "/Users/mariopersonal/Documents/dev/offers/project/offers/venv/lib/python2.7/site-packages/rest_framework/fields.py" in get_component
58. val = getattr(obj, attr_name)
Exception Type: AttributeError at /business/api/venues/1
Exception Value: 'QuerySet' object has no attribute 'name'
Comment puis-je faire cela correctement?
Grâce.
source d'informationauteur mario595
Vous devez vous connecter pour publier un commentaire.
De sérialiser un queryset ou de la liste des objets, au lieu d'une seule instance de l'objet, vous devriez passer l'
many=True
drapeau lors de l'instanciation de la sérialiseur. Si dans votre cas, essayez ceci: