django模型没有数据库

问题描述 投票:27回答:7

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

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

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

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

想法?

谢谢!

database django view django-models django-templates
7个回答
17
投票

另一种选择是使用:

class Meta:
    managed = False

防止django创建数据库表。

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


10
投票

听起来像我常规的Class

如果你愿意,你可以将它放入models.py,只是不要在django.db.models.Model上继承它。或者你可以将它放在导入到你想要使用它的范围内的任何python文件中。

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


5
投票

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

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


1
投票

使用Django的cache framework存储数据并在视图之间共享。


0
投票

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


0
投票

您需要缓存,它将您的数据存储在内存中,并将是单独的应用程序。

使用Django,您可以使用各种缓存后端,例如memcache,database-backend,redis等。由于您需要一些基本的查询和排序功能,我建议使用Redis。 Redis具有高性能(不高于memcache),支持数据结构(字符串/散列/列表/集/排序集)。

Redis不会替换数据库,但它将适合作为键值数据库模型,您必须准备密钥才能有效地查询数据,因为Redis仅支持查询密钥。

For example, user 'john.doe' data is: key1 = val1
The key would be - john.doe:data:key1
Now I can query all the data for for this user as - redis.keys("john.doe:data:*")

Redis命令可在http://redis.io/commands获得

Django Redis缓存后端:https://github.com/sebleier/django-redis-cache/


-8
投票

我把我的床铺到MongoDB或任何其他的nosql;持久化和删除数据非常快,你可以使用django-norel(mongodb)。

http://django-mongodb.org/

© www.soinside.com 2019 - 2024. All rights reserved.