В документации сказано про Queryset-запрос delete(), но мне он не помог. Применял следующим образом:
views.py
def get(self,request, user_name): #Обработчик подписки с редиректом на главную
blog_owner = User.objects.get(username=user_name)
blog = PersonalBlog.objects.get(author=blog_owner)
self_user_info = PersonalBlog.objects.get(author=request.user)
noted_posts_of_author = self_user_info.noted.filter(author=blog_owner)#Поиск в M2M-поле посты
#автора блога, от которого отписывается пользователь
for noted_element in noted_posts_of_author:
self_user_info.noted.delete(noted_element) #Попытка удаления
models.py
...
class PersonalBlog(models.Model): #Модель хранения данных о публикациях, подписках и подписчиках
class Meta:
verbose_name='Блог пользователя'
verbose_name_plural='Блоги пользователей'
author = models.ForeignKey(User, related_name='author')
posts = models.ManyToManyField(BlogPost, verbose_name='Посты', blank=True, related_name='posts')
feeds = models.ManyToManyField(User, verbose_name='Подписки', blank=True, related_name='feeds')
followers = models.ManyToManyField(User, verbose_name='Подписчики', blank=True, related_name='followers')
noted=models.ManyToManyField(BlogPost, blank=True, verbose_name='Прочитано', related_name='noted')
Traceback:
File "C:\Python34\lib\site-packages\django\core\handlers\exception.py" in inner
39. response = get_response(request)
File "C:\Python34\lib\site-packages\django\core\handlers\base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "C:\Python34\lib\site-packages\django\core\handlers\base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python34\lib\site-packages\django\views\generic\base.py" in view
68. return self.dispatch(request, *args, **kwargs)
File "C:\Python34\lib\site-packages\django\views\generic\base.py" in dispatch
88. return handler(request, *args, **kwargs)
File "C:\DjangoProjects\blog\main_site\views.py" in get
165. self_user_info.noted.delete(noted_element) #Попытка удаления
Exception Type: AttributeError at /unsubscribe/player/
Exception Value: 'ManyRelatedManager' object has no attribute 'delete'
Updated 18 May 2017, 19:59 by aigin95.