小编the*_*man的帖子

Django 的单例架构是否使其无法作为库中的独立 ORM 使用?

我喜欢 Django ORM。它简单、易于使用且功能相当强大。

我目前正在为我工​​作的 VFX 公司开发一些内部网站,为此我使用了 Django。与此同时,我们正在开发其他 Python 应用程序和库,以用于生产中的各种上下文。我们的核心库在很多地方需要与一些数据库进行交互,使用像 Django 这样的 ORM 真的会有所帮助。我知道其他选项,如 SqlAlchemy 或 PeeWee,但我想看看 Django 是否可以工作,因为我在网站上使用它并且我更喜欢它的 API。

在库中使用 Django 作为 ORM 很棘手(正如我在上一个问题中探讨的那样),因为 Django 希望被用作带有“应用程序”的网站。在库中,我可能想要定义任意数量的数据模型,这些模型将存在于库中的适当位置,但不在任何 Django 应用程序中(因为我们没有使用框架的任何其他部分)。到现在为止还挺好。

我可以在库中的任何位置为我的模型创建一个基类,如下所示:

from django.db import models
from django.apps import apps
import django.conf

django.conf_settings.configure(
    DATABASES = ...
)

apps.populate((__name__,))

class LibModel(models.Model):
    class Meta:
        abstract = True
        app_label = __name__
Run Code Online (Sandbox Code Playgroud)

然后我可以在库中的任何地方使用这个基类创建我自己的模型。由于我不依赖于数据库名称的“应用程序”,因此我需要明确说明它们。

class SpecificModel(LibModel):
    # fields go here
    class Meta(LibModel.Meta):
        db_table = "specific_model_table_name"
Run Code Online (Sandbox Code Playgroud)

这解决了我对必须模拟“应用程序”结构的担忧。基类中的name属性为 Django 提供了它需要的一切,然后 Django 不再抱怨找不到应用程序。其他模型文件可以放在任何他们想要的地方。

然而,有一个明显的用例,这一切都分崩离析。假设我的 Django …

python django orm django-models django-orm

10
推荐指数
1
解决办法
651
查看次数

标签 统计

django ×1

django-models ×1

django-orm ×1

orm ×1

python ×1