如何永久有效地在django中存储每用户数据

时间:2018-02-26 13:10:02

标签: python django django-models

我正在研究django关于书籍的网站,在那里你可以发表评论,评价书籍......我想知道如何以有效的方式存储每个用户的数据,以了解是否用户:

  • 已发布针对特定图书的评论
  • 已经评了一本书

这样,没有用户可以发布2条评论,我可以提供每用户体验。我甚至想限制他们评价的次数(比如每月3次)。问题:

  • 会话似乎没有用,因为数据没有存储在数据库中,一旦用户退出并重新进入页面,会话就消失了(我检查了django文档,但这个例子对我来说似乎没用)。

  • 我考虑在模型的每个实例中添加dicts或列表,并存储所有必要的数据,但我不知道它是否合适/有效

非常感谢你的时间,我希望有人知道!

1 个答案:

答案 0 :(得分:1)

达到你的第一个目标:

  

已发布针对特定图书的评论

您可以创建具有

的新模型
class Review(models.Model):
    user = models.ForeignKey(...)
    book = models.ForeignKey(...)
    datetime = models.DateTimeField()
    ... other fields like review content or score ...

    class Meta:
        unique_together = [
            ('user', 'book'),
        ]

达到你的第二个目标:

  

已经评了一本书

你可以添加另一个模型"评级"具有类似结构,或者您可以将该信息添加到您的"评论"因为单个用户只能为每本书提供一次评论和一个评级。

为了你的第三个目标:

  

我甚至想限制他们评价的次数(比如每月3次)。

一种非常简单的方法是将三个DateField添加到您的用户个人资料中(阅读customizing Djangos User model),以记录每个用户给出评分的最后时间。

或者你可以查询"评级"每次用户想要进行新评级时都要建立模型,以检查自该用户的最后一个条目以来是否有足够的时间。