[英]How to properly remove a specific ManyToMany relationship?
I have a ManyToMany relationship with one of my Models. 我与其中一个模型有ManyToMany关系。 On deleting a child, I want to remove the relationship but leave the record as it might be being used by other objects.
在删除孩子时,我想删除该关系,但保留该记录,因为其他对象可能正在使用该记录。 On calling the delete view, I get an AttributeError error:
在调用删除视图时,出现AttributeError错误:
Exception Value: 'QuerySet' object has no attribute 'clear'
异常值:“ QuerySet”对象没有属性“ clear”
This is my models.py: 这是我的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)
And the relevant section of views.py: 以及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())
Clear the fields on a Digest isntance 清除摘要摘录上的字段
digest = get_object_or_404(Digest, id=id)
if digest.user == request.user:
digest.feeds.clear()
#do your processing
In response to your comment. 回应您的评论。
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
Hope this helps! 希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.