Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django中实现此数据库模型?_Python_Mysql_Database_Django - Fatal编程技术网

Python 如何在Django中实现此数据库模型?

Python 如何在Django中实现此数据库模型?,python,mysql,database,django,Python,Mysql,Database,Django,Django目前不支持MySQL中的点数据类型。这就是为什么我创造了我自己的 class PointField(models.Field): def db_type(self): return 'Point' class Tag(models.Model): user = models.ForeignKey(User) utm = PointField() 如您所见,这是可行的,syncdb可以很好地创建模型 但是,我当前的代码使用原始SQL计算两点之

Django目前不支持MySQL中的点数据类型。这就是为什么我创造了我自己的

class PointField(models.Field):
    def db_type(self):
        return 'Point'

class Tag(models.Model):
    user = models.ForeignKey(User)
    utm = PointField()
如您所见,这是可行的,syncdb可以很好地创建模型

但是,我当前的代码使用原始SQL计算两点之间的长度

cursor.execute("SELECT user_id FROM life_tag WHERE\
              (GLength(LineStringFromWKB(LineString(asbinary(utm), asbinary(PointFromWKB(point(%s, %s)))))) < 55)...
这表示:选择给定点和表格点之间的长度小于55的位置


如何使用Django而不是原始SQL实现这一点?我不想再做游标和SELECT语句了。我如何修改models.py才能做到这一点?

您的问题有点不清楚-您只是问如何计算两点之间的距离?或者你希望ORM能为你提供一些功能

如果是后者,那么如果没有一些外部援助,这是不会发生的;几何和地理超出了大多数典型数据库映射系统的范围。您始终可以使用自动映射来检索您感兴趣的属性,并使用毕达哥拉斯或其他工具手动比较它们;没有SQL

关于我提到的“外部援助”,你可以看看哪些可能对你有用。对于有类似问题但未将Django用于ORM的人,也可以使用