如何正确移除特定的多对多关系?
我有一个模型之间的多对多关系。当我删除一个子对象时,我想去掉它的关系,但保留这个记录,因为可能还有其他对象在使用它。在调用删除视图时,我遇到了一个AttributeError错误:
异常值:'QuerySet'对象没有'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())
1 个回答
6
清空一个Digest实例的字段
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
希望这对你有帮助!