Фильтр по геометрии и группировка по местоположению в 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 не самые лучшие.