2011-06-14 29 views
0

我想代表有多個成員(每個成員也可以加入多個俱樂部)的俱樂部。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 

現在我的問題是,我與關聯帖子俱樂部,我不知道如何再撇清他們不刪除所有關聯的。

這可能不完全清楚。我有一個包含下面的代碼片段一個觀點:

 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關係,然後形成新的合作關係的老俱樂部。這全部基於用戶編輯他們的帖子。

我不確定如何在不刪除所有俱樂部或所有帖子或與俱樂部相關的所有帖子(而不是僅選擇帖子)的情況下獲得該中間表。

謝謝!

回答

1

如果我不要誤會,你不需要通過使用。任何M2Mfield是使用通過具有加(項目)刪除(項目)所有()明確的()方法,使

post = Post.objects.get(id=post.id) 
post.clubs.clear() 

您可以使用所有()列出所有相關數據,並且增加(項目)刪除(項目)添加或刪除特定的數據。

欲瞭解更多,請查看documentation

+0

這工作Fallen。不知道爲什麼我很困惑。謝謝! – Ben 2011-06-14 17:12:35

1

我不確定如果我瞭解您的問題,可以得到任何幫助嗎?

post = Post.objects.get(id=post.id) 
post.clubs_set.clear()