Фильтр по геометрии и группировка по местоположению в Django

У меня есть SQL-запрос, похожий на следующий:

SELECT Fip.fipcode, COUNT(Land.id)
FROM Land, Fip 
WHERE ST_Intersects(Fip.geometry, Land.geometry) 
GROUP BY Fip.fipcode

У меня реализованы следующие модели:

class Land(models.Model):
    id = models.IntegerField(primary_key=True, db_column="id")
    geometry = models.GeometryField(null=False, db_column="geometry", geography=True)

class Fip(models.Model):
    fipcode = models.CharField(db_column="fipcode", max_length=5)
    geometry = models.GeometryField(srid=4326, geography=False, db_column="geometry")

Я хотел бы использовать модели Django для фильтрации/группировки вместо выполнения необработанных SQL-запросов.

Как я могу это сделать? Извините, если на этот вопрос уже был дан ответ, я не смог найти хорошего ответа.

Я пробовал различные команды фильтрации аннотаций с моими моделями, но я не могу заставить их работать так, как ожидалось. Документы Django не самые лучшие.

Вернуться на верх