Python 修改Django模型有多难?

Python 修改Django模型有多难?,python,mysql,database,django,geodjango,Python,Mysql,Database,Django,Geodjango,我在做地理定位,Django没有点域。因此,我不得不用原始SQL编写代码。Django库GeoDjango不支持以下MYSQL数据库查询(有人能帮我验证一下吗?) cursor.execute(“从l_标记中选择id,其中\ (GLength(LineStringFromWKB)(LineString(作为二进制(utm))和二进制(PointFromWKB(point(%s,%s‘‘‘‘‘)’)

我在做地理定位,Django没有点域。因此,我不得不用原始SQL编写代码。Django库GeoDjango不支持以下MYSQL数据库查询(有人能帮我验证一下吗?)

cursor.execute(“从l_标记中选择id,其中\
(GLength(LineStringFromWKB)(LineString(作为二进制(utm))和二进制(PointFromWKB(point(%s,%s‘‘‘‘‘)’)<%s+精度+%s)\

我不知道为什么GeoDjango库不能在MYSQL数据库中实现这一点。我讨厌编写原始SQL来计算两点之间的距离。有没有一种方法可以为Django创建自己的库来处理这个问题?如果有,有多难?

为什么不扩展一个已经存在的类呢?只是好奇,希望我能帮助您指定当然。

GeoDjango确实有一个点域

看起来您正在尝试执行dwithin字段查找,但在MySQL(截至2010年4月)上不起作用,但在Postgres中起作用:

类别标签(型号): 点=点域()

Tag.objects.filter(point\uu dwithin=(point,D(mi=4)))

小心此类查询,因为它需要表扫描。如果您可以容忍选择矩形区域内的所有点,则可以使用包含查询的边界框:

Tag.objects.filter(包含的点=geom)


其中geom是一个多边形。

您使用的是哪个版本?在Django 1.2中,有一种新的方法来执行原始SQL。我使用的是1.0,但1.2不稳定?目标是在4月12日发布1.2。可能是这样的:
 cursor.execute("SELECT id FROM l_tag WHERE\
               (GLength(LineStringFromWKB(LineString(asbinary(utm),asbinary(PointFromWKB(point(%s, %s)))))) < %s + accuracy + %s)\