例によると、私は3つのモデルを持っています:
class User(models.Model):
name = models.CharField(max_length=128)
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(User, through='Membership')
class Membership(models.Model):
person = models.ForeignKey(User)
group = models.ForeignKey(Group)
date_joined = models.DateField()
メンバーの追加は機能します。しかし、ユーザーもグループも削除せずに、単一のメンバーシップ インスタンス (ユーザーがグループを終了する) を削除するにはどうすればよいでしょうか?
このように削除しようとすると:
u = User(request.user)
g = Group.objects.get(id=group_id, membership__user=u)
m = Membership(user=request.user, group=g)
m.delete()
エラーが発生します:
/groups/quit/1/ での AssertionError
ID 属性が [なし] に設定されているため、メンバーシップ オブジェクトを削除できません。