Django--我是否应该使用“通过表”构建M2M关系

问题描述

|| 我要代表拥有多个成员的俱乐部(每个成员也可以加入多个俱乐部)。 我创建了以下模型
   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()
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...