Django ne supporte actuellement pas le type de données "Point" dans MySQL. C'est pourquoi j'ai créé le mien.Comment faire ce modèle de base de données dans Django?
class PointField(models.Field):
def db_type(self):
return 'Point'
class Tag(models.Model):
user = models.ForeignKey(User)
utm = PointField()
Comme vous pouvez le voir, cela fonctionne, et syncdb
crée l'amende modèle.
Cependant, mon code actuel calcule une longueur entre deux points en utilisant du SQL brut.
cursor.execute("SELECT user_id FROM life_tag WHERE\
(GLength(LineStringFromWKB(LineString(asbinary(utm), asbinary(PointFromWKB(point(%s, %s)))))) < 55)...
Ce dit: Sélectionnez où la longueur entre le point donné et le point de table est inférieure à 55
Comment puis-je faire avec Django au lieu de RAW SQL? Je ne veux plus faire de curseurs et d'instructions SELECT. Comment puis-je modifier le fichier models.py pour ce faire?