假设User
可以阻止其他User
。现在,我正在ManyToManyField
上工作,它代表被阻止用户的列表。用户也可以停止阻止其他用户。因此,我想创建一个被阻止用户的列表,以便该用户可以停止阻止。
但是,问题是,如果用户A阻止了用户B,则即使用户A将用户B添加到ManyToManyField
,阻止的用户列表userB也具有用户A。在这种情况下,如何区分每个用户的关系?
class User(AbstractUser):
block_users_list = models.ManyToManyField("self", blank=True)
答案 0 :(得分:2)
您可以为关系设置symmetrical=False
,然后尝试使用related_name
属性。
class User(AbstractUser):
block_users_list = models.ManyToManyField("self", blank=True, symmetrical=False, related_name='blocked_by_users')
现在您有两种访问关系的方法:
user = User.objects.get(id=1)
user.block_users_list.all() # Will return the list of users blocked by user
user.blocked_by_users.all() # Will return the list of users who have blocked the current user