修改Django模型有多难?

时间:2010-03-30 21:13:21

标签: python mysql database django geodjango

我正在进行地理定位,而Django没有PointField。所以,我被迫在RAW SQL中编写。 Django库GeoDjango不支持MYSQL数据库的以下查询(有人可以为我验证吗?)

 cursor.execute("SELECT id FROM l_tag WHERE\
               (GLength(LineStringFromWKB(LineString(asbinary(utm),asbinary(PointFromWKB(point(%s, %s)))))) < %s + accuracy + %s)\

我不知道为什么GeoDjango库在MYSQL数据库中无法做到这一点。我讨厌编写RAW SQL来计算两点之间的距离。有没有办法可以为Django创建自己的库来处理这个?如果是这样,它有多难?

2 个答案:

答案 0 :(得分:0)

为什么不扩展已经存在的课程?只是好奇,希望我能特别帮助你。

答案 1 :(得分:0)

GeoDjango确实有一个PointField。

看起来你正在尝试进行dwithin字段查找,这对MySQL不起作用(截至2010年4月),但在Postgres中也是如此:

class Tag(Model):    point = PointField()

Tag.objects.filter(point__dwithin =(点,d(MI = 4)))

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

Tag.objects.filter(point__contained = geom)

其中geom是多边形。