/ / django-tastypie: Неможливо отримати доступ до bundle.request в зневодненому (self, bundle) - django, tastypie

django-tastypie: Неможливо отримати доступ до bundle.request у зневодненому вигляді (самостійно, розшарування) - django, tastypie

Я знайшов когось із тією ж проблемою, але розрада для нього не працює зі мною: побачити Django-Tastypie: Як ви отримуєте доступ до об’єкта запиту (Http) у пакеті?

Я намагаюся застосувати рішення, запропоноване в: Django tastypie: Ресурси показують різні за детальним запитом, як у запиті списку

в результаті чого цей код у моєму файлі ресурсів (api.py):

class LocationResource(ModelResource):
locationtype = fields.ForeignKey(LocationTypeResource, "locationtype", full=False)

class Meta:
queryset = Location.objects.all()
resource_name = "location"
excludes = ["public_anonymous", "public_authorized","x","y","z"]
authentication = BasicAuthentication()
authorization = DjangoAuthorization()

def dehydrate(self, bundle):
if bundle.request:
if bundle.request.path: == "/api/v1/location/":
del bundle.data["description"]
else:

logger.debug("request availabe")
else:
logger.debug("request not availabe")
return bundle

Я отримую помилку:

{
error_message: ""Bundle" object has no attribute "request"",
traceback: "Traceback (most recent call last):

File "/home/michel/django/sites/regelwater/eggs/django_tastypie-0.9.10-py2.6.egg/tastypie/resources.py", line 178, in wrapper
response = callback(request, *args, **kwargs)

File "/home/michel/django/sites/regelwater/eggs/django_tastypie-0.9.10-py2.6.egg/tastypie/resources.py", line 379, in dispatch_list
return self.dispatch("list", request, **kwargs)

File "/home/michel/django/sites/regelwater/eggs/django_tastypie-0.9.10-py2.6.egg/tastypie/resources.py", line 409, in dispatch
response = method(request, **kwargs)

File "/home/michel/django/sites/regelwater/eggs/django_tastypie-0.9.10-py2.6.egg/tastypie/resources.py", line 987, in get_list
to_be_serialized["objects"] = [self.full_dehydrate(obj=obj) for obj in to_be_serialized["objects"]]

File "/home/michel/django/sites/regelwater/eggs/django_tastypie-0.9.10-py2.6.egg/tastypie/resources.py", line 638, in full_dehydrate
bundle = self.dehydrate(bundle)

File "/home/michel/django/sites/regelwater/reservoir/api.py", line 71, in dehydrate
if bundle.request:

AttributeError: "Bundle" object has no attribute "request"
"
}

Відповіді:

3 для відповіді № 1

Ви, ймовірно, запустите Tastypie 9.10, якщо ви встановили з pypi. Об'єкт Bundle у версії pypi дійсно не має об’єкта запиту.

Якщо ви оновите до git версії майстра django-tastypie і використовуєте це, натомість проблему слід вирішити.

pip uninstall django-tastypie
pip install -e git+https://github.com/toastdriven/django-tastypie.git#egg=django-tastypie