Python 用于筛选空类别的上下文处理器

Python 用于筛选空类别的上下文处理器,python,django,django-models,django-queryset,Python,Django,Django Models,Django Queryset,在我的博客中,帖子是根据类别划分的。我已经从类别列表中排除了名为Uncategorized的类别,现在我想排除为空的类别 在一个上下文处理器中,我有下面的查询,运行良好: MyCategory.objects.exclude(category\u name=“Uncategorized”) 我尝试过这样的查询: def myblog_menu(request): myblog_menu_link = MyCategory.objects.exclude(category_name="U

在我的博客中,帖子是根据类别划分的。我已经从类别列表中排除了名为Uncategorized的类别,现在我想排除为空的类别

在一个上下文处理器中,我有下面的查询,运行良好:

MyCategory.objects.exclude(category\u name=“Uncategorized”)

我尝试过这样的查询:

def myblog_menu(request):

    myblog_menu_link = MyCategory.objects.exclude(category_name="Uncategorized").filter(category_name__category_set__isnull=True)
    return {
        'myblog_menu_link': myblog_menu_link,
    }
但我看到了这个错误:

CharField或join的不支持的查找“category_set” 不允许

我怎么能修好它

型号.py

class MyCategory(models.Mode):
  category_name = models.CharField(...)
  .
  .
  :

class BlogPost(models.Mode):
  title = models.CharField(...)
  category = models.ForeignKey(MyCategory, related_name="category_set", ....)
  .
  .
  :

您可以排除空的类别,包括:

MyCategory.objects.exclude(
    category_name='Uncategorized'
).filter(
    category_set__isnull=False
).distinct()
在这种情况下,查询为:

MyCategory.objects.exclude(
    category_name='Uncategorized'
).filter(
    blogpost_set__isnull=False
).distinct()
MyCategory.objects.exclude(
类别_name='Uncategorized'
).过滤器(
blogpost\u set\u isnull=False
).distinct()
class BlogPost(models.Mode):
  title = models.CharField(...)
  category = models.ForeignKey(MyCategory, related_name='blogpost_set', ....)
MyCategory.objects.exclude(
    category_name='Uncategorized'
).filter(
    blogpost_set__isnull=False
).distinct()