在Django应用程序中计算唯一最近访问者的棘手逻辑

时间:2015-11-05 18:54:52

标签: python django django-models django-views

我有一个在Django中制作的基于网络的实时聊天应用程序。用户可以组建其他用户可以聚集的组,留下消息(称为replies)和照片。每个用户访问以访问组的URL是:

url(r'^group/(?P<pk>\d+)/reply/$', auth(GroupView.as_view()), name="group_reply"),

其中pkgroup.pk

我的问题是:如何获取在过去5分钟内访问某个群组网址的所有不同用户的列表(或设置)?基本上,我是&#39;我试图计算每个组的唯一最近访问者的数量。我似乎无法解决如何做到这一点,虽然我猜会话信息可以帮助吗? (我在这个项目中使用django user_sessions

  

&#34;使会话对象成为其他ORM对象的第一类公民&#34;

)。

如果需要,组后面的模型是:

class Group(models.Model):
    topic = models.TextField(validators=[MaxLengthValidator(200)], null=True)
    rules = models.TextField(validators=[MaxLengthValidator(500)], null=True)
    owner = models.ForeignKey(User)
    private = models.CharField(max_length=50, default=0)
    category = models.CharField(choices=TYPE, default=1, max_length=25)
    created_at = models.DateTimeField(auto_now_add=True)

在每个组中发布回复的模型是:

class Reply(models.Model):
    text = models.TextField(validators=[MaxLengthValidator(500)])
    which_group = models.ForeignKey(Group)
    writer = models.ForeignKey(User)
    submitted_on = models.DateTimeField(auto_now_add=True)
    image = models.ImageField(upload_to=upload_pic_to_location, null=True, blank=True )

User是一个香草django.contrib.auth user

1 个答案:

答案 0 :(得分:0)

您没有收集所需数据的任何内容。如果要记录对页面的访问,则需要构建一个模型来执行此操作;一个简单的FK到用户(对于访问者)和组(对于被访问的组),加上一个时间戳,应该就足够了。然后,每次用户访问时,GroupView都可以在该表中创建一个条目。