内多点上的Django FieldError

2024-03-27 19:28:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法进一步找到Django在PostGIS中调用poly__within查询GeoDjango的行中出现错误的原因。你知道吗

我的模型没有poly但是下面的错误表示它是一个FieldError。我不知道它在哪里或者为什么要为poly寻找一个字段

Traceback (most recent call last):
File "/home/gridlockdev/Desktop/heroku/grace/env/lib/python3.5/site-packages/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "/home/gridlockdev/Desktop/heroku/grace/env/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/gridlockdev/Desktop/heroku/grace/env/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/gridlockdev/Desktop/heroku/grace/network/views.py", line 71, in view_routes
    routes = Route.objects.filter(poly__within= geom[0])
  File "/home/gridlockdev/Desktop/heroku/grace/env/lib/python3.5/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/home/gridlockdev/Desktop/heroku/grace/env/lib/python3.5/site-packages/django/db/models/query.py", line 784, in filter
    return self._filter_or_exclude(False, *args, **kwargs)
  File "/home/gridlockdev/Desktop/heroku/grace/env/lib/python3.5/site-packages/django/db/models/query.py", line 802, in _filter_or_exclude
    clone.query.add_q(Q(*args, **kwargs))
  File "/home/gridlockdev/Desktop/heroku/grace/env/lib/python3.5/site-packages/django/db/models/sql/query.py", line 1250, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File "/home/gridlockdev/Desktop/heroku/grace/env/lib/python3.5/site-packages/django/db/models/sql/query.py", line 1276, in _add_q
    allow_joins=allow_joins, split_subq=split_subq,
  File "/home/gridlockdev/Desktop/heroku/grace/env/lib/python3.5/site-packages/django/db/models/sql/query.py", line 1154, in build_filter
    lookups, parts, reffed_expression = self.solve_lookup_type(arg)
  File "/home/gridlockdev/Desktop/heroku/grace/env/lib/python3.5/site-packages/django/db/models/sql/query.py", line 1034, in solve_lookup_type
    _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta())
  File "/home/gridlockdev/Desktop/heroku/grace/env/lib/python3.5/site-packages/django/db/models/sql/query.py", line 1352, in names_to_path
    "Choices are: %s" % (name, ", ".join(available)))
django.core.exceptions.FieldError: Cannot resolve keyword 'poly' into field. Choices are: agency, agency_id, created_at, distance, duration, ogc_fid, route_color, route_desc, route_id, route_long, route_name, route_tcolor, route_type, route_url, shape_id, updated_at, wkb_geometry

在我的生活中是这样的视图.py你知道吗

json_feature = json.loads(request.POST['geo_obj'])
geom = make_geometry_from_feature(json_feature)
routes = Route.objects.filter(poly__within= geom[0])

Tags: djangoinpyselfenvhomeherokulib
1条回答
网友
1楼 · 发布于 2024-03-27 19:28:20

Django过滤器语法是关键字参数的第一部分,在__之前是字段名。Route.objects.filter(poly__within=geom[0])筛选poly字段位于给定几何体中的路由对象。你知道吗

您还没有共享您的Route模型,但我假设它上面有一个几何字段。如果是这样,您应该用几何体字段的名称替换poly。e、 如果你的模特像这样

from django.contrib.gis.db import models

class Route(models.Model):
    shape = models.MultiPolygonField()

那么你的过滤器应该是Route.objects.filter(shape__within=geom[0])。你知道吗

相关问题 更多 >