如何在django中将模型用作队列?

时间:2015-10-19 16:47:57

标签: django django-models

我想在“上次查看”列表中跟踪上次请求的文章。 我有RecentVisits模型这样做:

class RecentVisit(models.Model):
    title = models.CharField(default='', blank='false', max_length=100)
    slug = models.CharField(default='', blank='false', max_length=100)

我想将模型保持为固定宽度队列(FILA),所以我想知道最好的方法是什么?通过best,我的意思是确实需要最少数据库命中的解决方案。

更新 这是我提出的解决方案:

    l = RecentVisit.objects.values()            
    lastest_requests = l[::-1]

    #Keep database table size constant by throwing away last element 
    if len(lastest_requests) > N_SAVED_ALLOWED:
        lastest_requests.pop()
    #Empty table     
    RecentVisit.objects.all().delete()

    #Check of duplicates before saving to db
    if not any(d['title'] == post.title for d in lastest_requests):
        new_visit = RecentVisit(title= post.title, slug= post.slug) 
        new_visit.save()            
    #refill table with remaining (N-1) values    
    for r in lastest_requests:
        req = RecentVisit(title= r['title'], slug= r['slug'])             
        req.save() 

我在开发环境中增加了大约30ms的开销。但是我不确定它是最经济的,所以仍然在寻找更好的解决方案。

0 个答案:

没有答案