第一个提议:
包含邀请数据的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列表中删除该密钥。如果不可用,它将从缓存中简单显示。但不确定,如何点对此。