Django - 强制 ManyToManyField 的唯一项目
- 论坛
- Django - 强制 ManyToManyField 的唯一项目
20 浏览
Django - 强制 ManyToManyField 的唯一项目
我正在尝试做一些简单的事情,像这样:
members = models.ManyToManyField(User, blank=True, null=True, unique=True)
但是不允许使用unique。当查看创建的表时,它会创建外键,所以唯一性是隐含的。
我想能够将成员与表示组的这个模型关联起来。组可以没有成员,但我不希望同一个成员能够加入组两次。
我的想法是,如果我尝试这样做,应该会抛出异常,但似乎并没有抛出异常。
def join(request, id): user = request.user mygroup = Group.objects.get(id=id) mygroup.members.add(user) mygroup.num_members += 1 mygroup.save()
num_members会增加,因为没有抛出异常。重复的用户不会出现在管理工具中。add()是静默失败的吗?我应该在添加之前简单地检查用户是否已经存在吗?