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()
tastypie 的新手,当我关注文档时,我在 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 不能很好地结合在一起。 该修复程序隐藏在 Nelly Ngo 提供的链接中,更具体地说是 here .
一个临时的 hackish 修复是修补 tastypie/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())
关于python - AttributeError at/api/project/'Query' 对象没有属性 'query_terms' tastypie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47845126/