Использование Django и GeoDjango одновременно - PullRequest
0 голосов
/ 27 октября 2019

У меня есть сомнения по поводу использования GeoDjango с Django. У меня есть два приложения в моем проекте: Blog и Map. Эти два приложения связаны с третьим приложением Kernel. Внутри ядра есть несколько моделей, полезных для блогов и карт, и одна из них - TimeManager .

TimeManager - простая модель, которая " управляет временем ". :

from django.db import models

class TimeManager(models.Model):
    publishing_date = models.DateTimeField(
        'Published at',
        default=timezone.now,
        )
    updating_date = models.DateTimeField(
        'Updated at',
        auto_now=True,
        )
    timestamp = models.DateTimeField(
        auto_now=False,
        auto_now_add=True,
        )

    class Meta:
        abstract = True

В блоге есть модель Сообщение:

from django.db import models

from kernel.models import TimeManager

class Post(TimeManager):
    title=
    slug=
    descrtiption=
    .
    .

На карте есть модель MyMap:

from django.contrib.gis.db import models

from kernel.models import TimeManager

class MyMap(TimeManager):
    geom = models.PointField()
    title = 
    .
    .

Теперь я сомневаюсь в этом: Правильно ли использовать TimeManager как для геометрических, так и для геометрических моделей? Я знаю, что GeoDjango наследует от моделей Django, но я не знаю, правильный ли мой подход.

1 Ответ

1 голос
/ 27 октября 2019

Это не проблема вообще. GeoDjango очень хорошо интегрирован в сам проект Django, поэтому здесь нет причин для конфликта. GeoDjango является частью пакета contrib. Документы Django на пакете contrib:

Django стремится следовать философии Python «включенные батареи». Он поставляется с множеством дополнительных, дополнительных инструментов, которые решают типичные проблемы веб-разработки.

Этот код находится в django / contrib в дистрибутиве Django.

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

Просто убедитесь, что вы документируете, какие приложения используют GeoDjango, и как вы настраиваете геопространственные библиотеки в вашей системе. на тот случай, если вы хотите превратить свои приложения в библиотеки многократного использования, и у вас все получится.

Поскольку Kernel является неким базовым приложением, этот тип использования является довольно привлекательным DRY способом. создания объектов, имеющих какое-то управление датой и временем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...