2009-12-14 26 views
1

我與我的一個模型有許多關係。在刪除一個孩子時,我想刪除這個關係,但留下記錄,因爲它可能正在被其他對象使用。在調用delete看法,我得到一個AttributeError錯誤:如何正確刪除特定的ManyToMany關係?

Exception Value: 'QuerySet' object has no attribute 'clear'

這是我的models.py:

class Feed(models.Model): 
    username = models.CharField(max_length=255, unique=True) 

class Digest(models.Model): 
    name = models.CharField(max_length=255) 
    user = models.ForeignKey(User) 
    items = models.PositiveIntegerField() 
    keywords = models.CharField(max_length=255, null=True, blank=True) 
    digest_id = models.CharField(max_length=20, unique=True) 
    time_added = models.DateTimeField(auto_now_add=True) 
    active = models.BooleanField(default=1) 
    feeds = models.ManyToManyField(Feed) 

而且views.py的相關章節:

def feed_delete(request, id): 
    digest = get_object_or_404(Digest, id=id) 
    if digest.user == request.user: 
     Feed.objects.get(id=request.POST.get('id')).digest_set.filter(id=id).clear() 

    return HttpResponseRedirect(digest.get_absolute_url()) 

回答

6

清除Digest isntance上的字段

digest = get_object_or_404(Digest, id=id) 
if digest.user == request.user: 
    digest.feeds.clear() 
    #do your processing 

迴應你的評論。

digest = get_object_or_404(Digest, id=id) 
if digest.user == request.user: 
    feed=digest.feeds.get(id=2)#get an instance of the feed to remove 
    digest.feeds.remove(feed)#remove the instance 

希望這會有所幫助!

+0

我想刪除特定的Feed但不是全部 – 2009-12-14 18:45:07

+0

太棒了!我沒有嘗試刪除() – 2009-12-14 19:01:33

+0

嘗試digest.feeds.remove(feed)代碼./manage.py外殼。它應該只能刪除單個Feed。 – istruble 2009-12-14 19:09:20