我有一个场景。
我的应用程序中有很多用户,每个人都有自己的(Trusted Circle)
.Trusted Circle与好友有点相似。
我在这里感到困惑。
每个用户实施受信任圈子的最佳方式是什么。受信任的圈子用户也像我的应用中的用户一样。
我使用ManyToMany
属性聆听了self
字段。我的应用程序值得在每个用户维护受信任的圈子。
如果可能的话,请给我一些其他选择。
答案 0 :(得分:1)
经典方法将是:
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)
要在create 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)
享受并邀请我加入您信任的圈子;)
答案 1 :(得分:0)
要向单个表添加多对多关系,请为与单个表具有多对多关系的字段添加一个不同的related_name
。
例如:
class A(models.Model):
field1 = models.ManyToManyField('B', related_name='field1')
field2 = models.ManyToManyField('B', related_name='field2')
field3 = models.ManyToManyField('B', related_name='field3')
class B(models.Model):
name = models.CharField(max_length=30, unique=True)