Sar*_*tra 13 django django-models
我希望存储用户的活动,但我不知道在哪里存储它.我不认为数据库是一个选项,因为它将是非常大的.我想知道像facebook,dropbox这样的网站是如何记住特定用户的所有活动的.并且它不能存储在会话中,因为这不是特定于会话的,而是特定于用户的.
请帮我解决你的建议.
通常情况下Django Admin Logs,如果需要,您可以使用此类活动.
通常,Django会跟踪管理操作,例如创建,更新或删除现有记录.它具有以下结构:
from django.contrib.admin.models import LogEntry
LogEntry.objects.log_action(
user_id = ...,
content_type_id = ...,
object_id = ...,
object_repr = ....,
change_message = ...,
action_flag = ...
)
Run Code Online (Sandbox Code Playgroud)
我在我的系统中使用它作为记录器,并跟踪每个动作.通常,Django会记录插入,更新或删除通过管理表单执行的操作,并记录我的手写视图和表单操作.此外,您还可以使用信号捕获用户操作,例如登录/注销.
我定义了新的动作标志.Django使用3个标志:1表示插入,2表示更新,3表示删除.我用我的动作标志扩展了该列表.
正如我所说,使用它的优点是,您不需要处理默认的Django Admin表单以及使用这些表单执行的任何操作.
您可能希望查看django-activity-stream,它是活动流规范的一个实现.这将在数据库中存储操作列表,并允许以下用户/实体提供与Facebook类似的内容(如果您感兴趣的话).
但是,正如您所提到的,这可能最终会产生大量数据,这对于传统的单一数据库方法来说可能有点多.我不确定像Twitter这样的网站如何处理它,但除非你计划很快扩展标准数据库方法可能会持续一段时间.