2009-11-08 53 views
2

我正在研究django中一个不那么大的项目,其中包括一个论坛系统。Django/SQL:记录谁在论坛上阅读什么

我大部分的系统处于或多或少的功能状态,但我仍然缺少一个功能,以便在用户有新帖时标记未读线程。

事情是我真的不能想出一种方法来正确存储该信息。我的第一个想法是创建另一个模型,将存储每个用户的线程列表中的更改。有一个ForeignKey(User)和一个ForeignKey(Thread),并且只是在每次发布帖子或将帖子添加到线索时不断添加新条目。

但是,我不确定一段时间后可能会有几百个线程可能会发生怎样的扩展,也可能是50-200个用户。因此,对于未登录的用户,每个新帖子添加200行?听起来很多。

其他论坛系统如何做呢?我怎样才能实现一个系统在Django中处理这些事情。

谢谢!

回答

1

您也可以简单地存储用户上次阅读特定论坛的时间。自该日期以来已更新的任何帖子都是新的。您只会为每个用户存储一条附加信息,而不是每个用户每条信息的一条信息。

+0

不完全按照我想要的做法,但我想它必须是它。 – cwj 2009-11-08 19:51:34

2

你最好存储“读”位,而不是“未读”位。而且你可以将它们存储为关系数据,但是存储在一个巨大的数据块中。然后,只有当用户阅读帖子时,您才不必在添加新帖子时修改读取数据。

+0

你能举个例子吗?无论如何,你是什么意思? – cwj 2009-11-08 16:51:02

+0

例如,如果您的帖子被赋予递增的整数ID,那么您可以通过存储大的二进制BLOB来记录哪些帖子已被读取,其中每个位是帖子的读取位。将其存储在用户记录中,并在用户阅读帖子时更新blob。 – 2009-11-08 17:44:35

+0

一直在努力。不幸的是,我遇到了unicode问题。我无法真正找到blob字段,出于某种原因,“text”是最接近的选项(但有这些unicode问题) – cwj 2009-11-08 19:36:08