问题描述
||
我要代表拥有多个成员的俱乐部(每个成员也可以加入多个俱乐部)。
我创建了以下模型
class Club(models.Model):
name=models.CharField(max_length=100)
admin=models.ManyToManyField(User,related_name=\'club_admins\')
member=models.ManyToManyField(User,related_name=\'memberships\')
posts=models.ManyToManyField(Post,blank=True,null=True)
description=models.TextField(max_length=500,blank=True)
public=models.BooleanField(default=True)
password=models.CharField(max_length=30,blank=True)
def __unicode__(self):
return self.name
我现在的问题是我正在将俱乐部与Posts关联,并且我不确定如何在不删除所有关联的情况下取消它们的关联。
这可能还不是很清楚。我有一个包含以下代码段的视图:
if request.POST.get(\'clubs\'):
clubs=request.POST[\'clubs\'].split(\',\')
p=int(post.id)
old_clubs=Club.objects.filter(posts__pk=p)
for o in old_clubs:
#figure out how to disassociate the club with this post
for a in clubs:
group=Club.objects.get(name=a)
group.posts.add(post)
我想做的是清除所有与此帖子有M2M关系的老俱乐部,然后建立新的关系。这些都是基于用户编辑其帖子的。
我不确定如何在不删除所有俱乐部或所有帖子或与俱乐部相关联的所有帖子(而不是仅选择帖子)的情况下到达中间表格。
谢谢!
解决方法
如果我不误会,则无需使用。任何不使用的M2Mfield都有add(item),remove(item),all()和clear()方法,因此
post = Post.objects.get(id=post.id)
post.clubs.clear()
您可以使用all()列出所有相关数据,并使用add(item)和remove(item)添加或删除特殊的数据。
有关更多信息,请查看文档
, 我不确定是否了解您的问题,这对您有帮助吗?
post = Post.objects.get(id=post.id)
post.clubs_set.clear()