施行のManyToManyFieldユニークなアイテム:ジャンゴ - 私はこのような単純なものをやろうとしている
members = models.ManyToManyField(User,blank=True,null=True,unique=True)
が、ユニークは許可されていません。作成されたテーブルを見ると、それは外来キーを作るので一意性が暗示されます。
グループを表すこのモデルにメンバーを関連付けることができます。グループにはメンバーはいない可能性がありますが、同じメンバーがグループに2回参加することはできません。
私はこれを試してやると例外がスローされると考えられますが、例外がスローされないようです。
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が増分されます。重複したユーザーは、adminユーティリティーには表示されません。 add()は静かに失敗しますか?追加する前にユーザーが既に含まれているかどうかを確認するだけでいいですか?
ありがとうございます!
は、なぜあなたは、ユーザーにグループからの外部キーをしませんか?この方法では、ユーザーは複数のグループに所属できますが、グループごとに1回だけ必要になります。 – Liorsion
グループからユーザーへの 'ForeignKey'は、グループ内に1人のユーザーしか存在しないことを意味します。 'ForeignKey'はmany-to-oneです。 –