django朋友模型与圈子 - 选择最佳方式 - 提供不同的方法

时间:2013-05-06 00:32:04

标签: python django database-design

第一个提议:
包含邀请数据的Friendinvite模型。
以这种方式包含朋友数据的朋友模型:

FriendModel(models.Model):
    user = foreignkey..
    friend = fkey ...
    circle = foreignkey ..

所以,这里让我们假设,我们有3个用户,usera,userb,userc。 usera,userb是朋友。 userb,userc是朋友。 usera,userc是朋友。然后,我们在这里有6条记录:

    Record 1: user = usera, friend=userb
    Record 2 : user = usera, friend=userc
    Record 3: user = userb, friend=usera
    Record 4 : user = userb, friend=userc
    Record 5: user = userc, friend=usera
    Record 6 : user = userc, friend=userb

我知道这里的记录增加了一倍,但为了让“圈子”正常工作,我已经这样做了。

第二个提案:

不会有朋友模特,只有Circle会在那里

  class Circle(models.Model):
       user = foreignkey...
       json = json data comes here

所以,我在这里做的是,对于每个用户,将在这里创建一个对象,并在此json数据中列出他的朋友列表。

你觉得哪种方法好?第一还是第二?另外,json计划难以让共同的朋友陷入困境吗?

好的,在这两种方法中,我们在获取用户时也必须获取用户信息,因此,这是我的计划。缓存每个用户的userprofile和userobject FOREVER,每当修改用户对象或userprofile obj时,我们都会触发为该实例刷新缓存。我们应该怎么做 ?

我对此有一个想法是,将修改后的用户ID存储在某些内存或redis类型的快速数据库中。我们编写一个装饰器来检查请求id是否在修改的用户ID列表中。如果可用,则将从数据库中获取该密钥,并从修改的用户ID列表中删除该密钥。如果不可用,它将从缓存中简单显示。但不确定,如何点对此。

0 个答案:

没有答案