django模型没有数据库

dli*_*wak 28 database django view django-templates django-models

我知道自动设置是让您在models.py中定义的任何模型成为数据库表.

我正在尝试定义不是表格的模型.每次用户搜索某些内容时,他们都需要存储动态数据(我们从API获取并配置).需要组装这些数据,然后在用户完成后丢弃.

以前我用过数据库表.它允许我在任何视图中执行"Trips.objects.all"之类的操作,并将其传递给任何模板,因为它都来自一个数据源.我听说你可以不"保存"模型实例化,然后它不保存到数据库,但我需要访问这些数据(我在一个视图中汇编),在多个其他视图中,操纵它并显示它...如果我不保存我无法访问它,如果我保存,那么它在数据库中(这将与多个用户的并发问题)

我真的不想传递字典/列表,我甚至不确定如果必须的话我是怎么做的.

想法?

谢谢!

and*_*rov 17

另一种选择是使用:

class Meta:
    managed = False
Run Code Online (Sandbox Code Playgroud)

防止django创建数据库表.

https://docs.djangoproject.com/en/1.9/ref/models/options/#managed

  • 这不准确.`managed = False`的模型仍然会创建表. (4认同)
  • @zepp.lee 也许您指的是旧版本,但当前文档明确指出“如果 [management =] False,则不会为此模型执行任何数据库表创建或删除操作。如果模型表示现有模型,则这很有用表或通过其他方式创建的数据库视图。” (https://docs.djangoproject.com/en/3.1/ref/models/options/#management)。因此模型的功能假设有一个数据库表映射到模型用于查询等,但它不会做任何事情来确保数据库表的存在(即不为您管理它) (3认同)
  • 发帖者提到他想使用 Django 模型,但没有表格支持。您在此处链接的 Django 文档特别提到,只有迁移和删除操作不会执行,而所有其他与表相关的操作将继续工作,就像表存在一样。 (2认同)

Joh*_*Mee 11

听起来像是Class我的常规.

也许使用中间件在请求进入时实例化它,并在请求完成时丢弃.一种访问策略可能是将其附加到请求对象本身但是ymmv.

  • 我最好把这个常规课程放在哪里?`models.py`? (4认同)
  • 使用模型而不是常规类有时会很有利,即使用 django-rest-swagger 之类的东西来生成 API 文档时。 (2认同)

Bur*_*lid 5

与SQLAlchemy不同,django的ORM不支持在没有数据库后端的情况下查询模型.

您的选择仅限于使用SQLite内存数据库,或者使用dqms等第三方应用程序,这些应用程序为django的ORM提供纯内存后端.


Ale*_*nko 0

尝试使用基于数据库或文件的会话