我有一个场景。
我的应用程序中有很多用户,每个人都有自己的(Trusted Circle)
。Trusted Circle 与亲密 friend 有点相似。
我在这里遇到了困惑。
实现每个用户可信圈子的最佳方式是什么。可信圈子用户也像我的应用程序中的用户。
我听说过带有 self
属性的 ManyToMany
字段。值得在我的应用程序中使用它来维护每个用户的可信圈子。
如果可能的话,请建议我一些其他替代方案。
最佳答案
经典方法将是:
1 user circle can contains n users
1 user may be in n user circles.
这是一个 N:M 关系。
但是,因为这是针对 django 的,所以我的 django 设计建议是:
1:1 relationship to circle:
1 user has 1 circle
N:M relationship to users circle:
1 circle can contains n users
1 user may be in n circles.
圈子具有一对一和 m2m 关系:
class Circle(models.Model):
owner = models.OneToOneField(User, primary_key=True)
users = models.ManyToManyField(User)
要在创建用户时创建用户圈子:
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
def create_circle(sender, **kw):
user = kw["instance"]
if kw["created"]:
c = Circle(user=user)
c.save()
post_save.connect(create_circle, sender=User)
享受并将我加入您值得信赖的圈子;)
关于 Django : Many TO many relationship for same table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15196407/