2009-12-14 6 views
1

내 모델 중 하나와 ManyToMany 관계가 있습니다. 자식을 삭제할 때 관계를 제거하고 다른 개체에서 사용하고있는 것처럼 레코드를 남기고 싶습니다.특정 ManyToMany 관계를 올바르게 제거하는 방법은 무엇입니까?

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

지우기이 내 models.py입니다

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

: 삭제보기를 호출에, 나는 AttributeError 오류가 다이제스트 인센티브의 필드

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

내가 특정 피드를 제거하고 싶습니다. 전부는 아니지만 –

+0

좋습니다! remove()를 시도하지 않았습니다. –

+0

./manage.py 쉘에서 digest.feeds.remove (피드) 코드를 사용해보십시오. 단일 피드 만 제거해야합니다. – istruble

관련 문제