Django получает ошибку NoneType при запросе тегов с помощью TaggableManager
Я создаю блог на Django и использую django-taggit для поиска похожих постов. Я получаю
аргументint() должен быть строкой, байтоподобным объектом или числом, а не 'NoneType'
Когда я запрашиваю пост (представление PostDetail), в котором есть только один тег, который не использовался в других постах. Если пост имеет тег, который использовался ранее, или два тега, один новый, а другой использовался ранее, все в порядке. Проблема может быть связана с тем, что я запрашиваю обратный внешний ключ, поэтому 'None' появляется для тегов, не имеющих ни одного поста (источник документация Django по values_list)
models.py
class Post(models.Model):
tags = TaggableManager(
help_text="We suggest to use no more than 3 tags to improve search results")
views.py
class PostDetail(View):
def get(self, request, slug, *args, **kwargs):
# fetch post by similarity
post_tags_ids = post.tags.values_list('id', flat=False)
similar_posts = Post.objects.filter(tags__in=post_tags_ids)\
.exclude(id=post.id)
similar_posts = similar_posts.annotate(same_tags=Count('tags'))\
.order_by('-same_tags')
Я следую примеру, показанному в книге Django by Example, вот repository.
Я бы хотел, чтобы подробный вид сообщения отображался в любом случае, как я могу избежать получения 'NoneType'? Заранее спасибо за любую помощь.