Django 的扁平文件模型实例
项目描述
允许您将 Django 模型的实例存储为扁平文件(简化型 fixtures)。当您想在 Git 仓库中存储内容,但仍想使用正常的 Django ORM 方法及快捷函数时,此功能非常有用。
它通过在启动时将数据加载到内存中的 SQLite 数据库,然后从那里提供查询来实现。这意味着它会在您的应用程序启动时添加一点时间,但与静态文件相比,它仍然允许您编写查询并拥有动态视图,同时查询返回在微秒级别,速度极快。
它不会将模型更改持久化回文件中 - 这完全是用于在文本编辑器中创作内容并通过 Django 使用它。
为什么不使用正常的 fixtures 呢?
它们不仅有点啰嗦,而且需要加载到非内存数据库(较慢)中,并且您需要很多逻辑来确定是否应该更新或删除现有条目。
安装
首先,安装此包
pip install yamdl
然后,将其添加到 INSTALLED_APPS
INSTALLED_APPS = [ ... 'yamdl', ... ]
然后,将内存数据库添加到 DATABASES
DATABASES = { ... 'yamdl': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'file:yamdl-db?mode=memory&cache=shared', } }
然后,添加一个 YAMDL_DIRECTORIES 设置,该设置定义了您的 YAML 文件目录的位置(它是一个列表)
YAMDL_DIRECTORIES = [ os.path.join(PROJECT_DIR, "content"), ]
最后,添加数据库路由器
DATABASE_ROUTERS = [ "yamdl.router.YamdlRouter", ]
使用方法
首先,将 __yamdl__ 属性添加到您想要使用静态内容的模型。一个模型只能是静态的或动态的,不能两者都是
class MyModel(models.Model): ... __yamdl__ = True
然后,在上述 YAMDL_DIRECTORIES 设置中列出的目录之一下开始创建静态文件。在这些目录中的一个中,创建一个格式为 appname.modelname 的目录,然后创建以 .yaml 结尾的 YAML 文件。
andrew-site/ content/ speaking.Talk/ 2017.yaml 2016.yaml
在这些 YAML 文件中,您可以定义一个模型实例列表,如下所示
- title: 'Alabama' section: us-states - title: 'Alaska' section: us-states done: 2016-11-18 place_name: Fairbanks - title: 'Arizona' section: us-states done: 2016-05-20 place_name: Flagstaff
或者顶层一个单独的模型实例,如下所示
conference: DjangoCon AU title: Horrors of Distributed Systems when: 2017-08-04 description: Stepping through some of the myriad ways in which systems can fail that programmers don't expect, and how this hostile environment affects the design of distributed systems. city: Melbourne country: AU slides_url: https://speakerdeck.com/andrewgodwin/horrors-of-distributed-systems video_url: https://www.youtube.com/watch?v=jx1Hkxe64Xs
您还可以在文档分隔符下方定义一个 Markdown 文档(以 .md 结尾),它将被加载到名为 content 的列中。
date: 2022-01-18 21:00:00+00:00 image: blog/2022/241.jpg image_expand: true section: van-build slug: planning-a-van title: Planning A Van --- What's In A Van? ---------------- So, I have decided to embark on my biggest project to date (and probably for a while, unless I finally get somewhere to build a cabin) - building myself a camper van, from scratch. Well, from an empty cargo van, anyway.
文件可以嵌套在其模型目录的任何级别下,因此如果您想的话,可以在目录中分组文件(例如,按年份分组博客文章)。
这些文件也被添加到 Django 自动加载器中,所以如果您正在使用开发服务器,那么在编辑文件时会重新加载(这样您可以看到实时反映的变化 - 它们仅在服务器启动时读取)。
项目详情
下载文件
下载适合您平台的应用文件。如果您不确定该选择哪个,请了解有关 安装软件包 的更多信息。
源分发
构建分发
yamdl-1.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9096da8f72ffda814686eab37ab1be1c9802faf1b01f9351bdad7c78a938fb74 |
|
MD5 | 4e27c1bab06f2d0ba6588652a6910426 |
|
BLAKE2b-256 | 7277aa2d66e28cd68c8c5837f1fcc23e093d049121d6ed3d20474e94591efa57 |
yamdl-1.0.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 107b3761b3b3d14f054f9f1aa8d1ffdfb8bdd2b993e275e7cefff525bf7b00bc |
|
MD5 | fe6fbc3a4129c8a796eeea8b8669e90d |
|
BLAKE2b-256 | d4be4637ef482a3b01e0e5016b5db53aaea0760c77fe79b7078024fcf8a83e50 |