我对在Django中使用GeoDjango表示怀疑。我的项目中有两个应用程序:Blog
和Map
。这两个应用程序与第三个应用程序Kernel
有关。在内核内部,有一些对Blog和Map有用的模型,其中之一是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模型,但我不知道我的方法是否正确。
这完全没有问题。 GeoDjango已很好地集成到Django项目本身中,因此这里没有冲突的原因。 GeoDjango是contrib软件包的一部分。 The Django docs on the contrib package:
Django的目标是遵循Python的“含电池”理念。它附带了多种其他可选工具,可解决常见问题Web开发问题。
此代码位于Django发行版的django / contrib中。
这意味着您可以假设django.contrib中包含的所有其他Django功能都可以与Django的其余部分很好地配合。
[如果要把您的应用程序变成可重用的库,并且应该很好,请确保您记录了哪些应用程序使用GeoDjango,以及如何在系统上配置地理空间库。
只要内核是某种基本应用程序,这种用例就是一种创建具有某种日期和时间管理对象的漂亮DRY方法。