[英]How to delete post and delete tag which will be unused on Django2.2 using django-taggit
我正在制作一个使用 django 和 django-taggit 的博客应用程序。 我使用django.views.generic.edit.DeleteView
做了一个删除视图。 但是当我看到管理页面时,帖子被删除了,但标签没有。 如何删除帖子并同时删除将不使用的标签?
这是我尝试过的代码。 如果你删除delete
function,它只会删除帖子。
视图.py
class DeleteView(LoginRequiredMixin, generic.edit.DeleteView):
model = Post
success_url = reverse_lazy('portal:index')
def delete(self, request, *args, **kwargs):
deltag = self.object.tags.clear()
result = super().delete(request, *args, **kwargs)
return deltag,result
模型.py
from django.db import models
from django.urls import reverse
from taggit.managers import TaggableManager
class Post(models.Model):
author = models.ForeignKey('auth.User',on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = models.TextField()
tags = TaggableManager(blank=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('portal:index')
我不相信您可以删除与Post
相关的标签,因为另一个Post
也可能使用其中一些标签。
您可以做的是删除不再使用的Tag
:
from taggit.models import Tag
class DeleteView(LoginRequiredMixin, generic.edit.DeleteView):
model = Post
success_url = reverse_lazy('portal:index')
def delete(self, request, *args, **kwargs):
result = super().delete(request, *args, **kwargs)
Tag.objects.filter(post=None).delete()
return result
但是请注意,通常标签不仅用于一个 model(如Post
),而且用于多个模型。 因此,通过Post
model 删除未使用的标签可能不是一个好主意,因为Comment
或Product
等仍然可以使用给定的标签。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.