【发布时间】:2019-08-06 00:00:51
【问题描述】:
我在 django 应用程序中使用 postgres/postgis 数据库的应用程序有两个具有一对多关系的模型。 我在数据库和 pgadmin 面板中创建了一个不容易的查询并且工作正常。
这里是查询:
select string_agg(distinct app_work.id::text, ', ') AS code_work,string_agg(distinct app_work.stage, ', ')
AS stage,string_agg(distinct app_work.dfield_work, ', ') AS dfield,app_point.geom
from app_point, app_work where app_point.id=app_work.point_field_id GROUP BY app_point.id;
现在我想在我的 django 应用程序中使用这个查询(我需要这个查询的结果)来创建 geojson 或 json 导出。
我不确定如何使用 django 方法对象和查询转换此查询(例如 point.objects.all())我尝试使用这样的自定义 postgres 查询:
models.py
class point(models.Model):
geom = models.MultiPointField(srid=4326)
objects = models.GeoManager()
def __unicode__(self):
return str(self.id)
class meta:
verbose_name_plural="point_info"
class work(models.Model):
dfield_work = models.CharField(max_length=100,blank=True, null=True)
stage = models.CharField(max_length=100,blank=True, null=True)
field1 = models.CharField(max_length=100,blank=True, null=True)
field2 = models.CharField(max_length=100,blank=True, null=True)
point_field= models.ForeignKey('point', blank=True, null=True)
def __unicode__(self):
return str(self.id)
vews.py
from django.db import connection
def points(request):
cursor = connection.cursor()
cursor.execute("""seselect string_agg(distinct app_work.id::text, ', ') AS code_work,string_agg(distinct app_work.stage, ', ')
AS stage,string_agg(distinct app_work.dfield_work, ', ') AS dfield,app_point.geom
from app_point, app_work where app_point.id=app_work.point_field_id GROUP BY app_point.id from log_point, log_work where log_point.id=log_work.point_field_id GROUP BY log_point.id""")
row = cursor.fetchall()
print row
data = serialize('geojson', row)
return HttpResponse(data,content_type='json')
在打印行中我得到了正确的列表结果
但不工作,我有这个错误:
'tuple' object has no attribute '_meta'
知道怎么解决吗?
【问题讨论】:
-
该错误来自哪一行?
-
@HenryWoody 如果我访问此链接,该错误会在浏览器的页面中显示给我。有什么想法吗?
-
我认为即使在浏览器中仍然应该有错误的回溯,但如果没有,您能否包含来自运行服务器的控制台/终端的回溯?
-
还有
serialize定义在哪里? -
请求方法:GET 请求 URL:127.0.0.1:8000/data Django 版本:1.11.3 异常类型:AttributeError 异常值:'tuple' 对象没有属性 '_meta' 异常位置:Python27\Lib\site- package\django\contrib\gis\serializers\geojson.py in start_object,第 35 行,如果对你有帮助我在 views.py 中使用此代码
标签: python django postgresql python-2.7