【问题标题】:AttributeError at /api/project/ 'Query' object has no attribute 'query_terms' tastypie/api/project/ 'Query' 对象的 AttributeError 没有属性 'query_terms'
【发布时间】:2017-12-16 11:25:01
【问题描述】:
class Project(models.Model):
     project_name = models.CharField(max_length=100,default=None)
     user = models.ForeignKey(User, on_delete=models.CASCADE)
     intro = models.TextField(default=None)
     start_date = models.DateField()
     end_date = models.DateField()

    def __str__(self):
       return self.project_name



class UserResource(ModelResource):
     class Meta:


class ProjectResource(ModelResource):
     user = fields.ToManyField(UserResource, 'user',  full=True)

    class Meta:
       queryset = Project.objects.all()
       resource_name = 'project'
       allowed_methods = ['post', 'get']
       authorization = DjangoAuthorization()

tastepie 的新手,当我关注文档时,我在 api url (api/project/) 上出现属性错误,不知道 query_terms 的含义,尝试搜索,在此先感谢

  File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/exception.py", line 35, in inner
    response = get_response(request)
  File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py", line 128, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py", line 126, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python3.5/dist-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/tastypie/resources.py", line 221, in wrapper
    response = callback(request, *args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/tastypie/resources.py", line 461, in dispatch_list
    return self.dispatch('list', request, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/tastypie/resources.py", line 493, in dispatch
    response = method(request, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/tastypie/resources.py", line 1348, in get_list
    objects = self.obj_get_list(bundle=base_bundle, **self.remove_api_resource_names(kwargs))
  File "/usr/local/lib/python3.5/dist-packages/tastypie/resources.py", line 2157, in obj_get_list
    applicable_filters = self.build_filters(filters=filters)
  File "/usr/local/lib/python3.5/dist-packages/tastypie/resources.py", line 2036, in build_filters
    query_terms = self._meta.queryset.query.query_terms
AttributeError: 'Query' object has no attribute 'query_terms'

【问题讨论】:

  • 你使用的是什么 Django 和 TastyPie 版本?
  • 嘿,谢谢,我用错了版本的 sweetpie 和 Django。

标签: python django tastypie


【解决方案1】:

似乎当前版本的 Django 和 Tastypie 不能很好地结合在一起。 修复隐藏在 Nelly Ngo 提供的链接中,更具体地说是here

一个临时的hackish修复是修补tastepie/resources.py。 在我的系统上的 /usr/local/lib/python3.5/dist-packages/tastypie。

替换行:

if getattr(self._meta, 'queryset', None) is not None:
    # Get the possible query terms from the current QuerySet.
    query_terms = self._meta.queryset.query.query_terms
else:
    query_terms = QUERY_TERMS

与:

query_terms = QUERY_TERMS

query_terms = query_terms | set(GeometryField.class_lookups.keys())

与:

query_terms |= set(GeometryField.class_lookups.keys())

【讨论】:

    猜你喜欢
    • 2022-10-08
    • 2019-09-06
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 2012-12-01
    • 2021-04-19
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多