Я играю с GeoDjango и у меня есть некоторые сомнения.Я буду очень признателен за любые комментарии и предложения.
Это моя проблема.Во-первых, я определил этот (абстрактный) класс:
from django.contrib.gis.db import models
from django.contrib.gis.geos import *
class LocatableModel(models.Model):
country = models.CharField(max_length=48, blank=True)
country_code = models.CharField(max_length=2, blank=True)
locality = models.CharField(max_length=48, blank=True)
sub_locality = models.CharField(max_length=48, blank=True)
street = models.CharField(max_length=48, blank=True)
address = models.CharField(max_length=120, blank=True)
point = models.PointField(null=True)
objects = models.GeoManager()
class Meta:
abstract = True
Во-вторых, я определил этот другой класс «Entity», который представляет человека или организацию, связанную с моим сайтом:
from django.db import models
class Entity(models.Model):
name = models.CharField(max_length=64)
slug = models.SlugField(max_length=64, unique=True)
website = models.URLField(verify_exists=False, blank=True)
email = models.EmailField(blank=True)
...
Наконец, я создал класс из предыдущих:
import LocatableModel
import Entity
class Organization(Entity, LocatableModel):
timetable = models.CharField(max_length=64)
...
На мой взгляд, я хотел бы найти организации рядом с определенной точкой:
from django.contrib.gis.geos import Point
from django.contrib.gis.measure import D
def index(request):
pnt = Point(12.4604, 43.9420)
dic = { 'orgs': Organization.objects.filter(point__distance__lte=(pnt, D(km=7))) }
return render_to_response('index.html', dic)
Но я получаю сообщение об ошибке:
«Присоединение к полю« точка »не разрешено. Вы неправильно написали« расстояние »для типа поиска?»
Мне кажется, я путаюсь ссвойство модели 'objects', но я не уверен.Есть идеи?Заранее спасибо.