Фильтр поля в объекте, где поле имеет множество вариантов

Как показать список в object.filter()?

Когда я загружаю страницу, я получаю только печать queryset2, чтобы показать пост. Что имеет смысл. Но почему queryset и queryset1 не показывают посты с этими категориями?

models.py

class Post(models.Model):
    ANALYSIS = "Analysis"
    MILESTONE = "Milestone"
    FEATURES = "Features"
    TUTORIALS = "Tutorials"
    CAREERS = "Careers"
    COMMUNITY = "Community"

    CATEGORY_CHOICES = [
        (ANALYSIS, 'Analysis'),
        (MILESTONE, "Milestone"),
        (FEATURES, "Features"),
        (TUTORIALS, "Tutorials"),
        (CAREERS, "Careers"),
        (COMMUNITY, "Community"),
    ]

    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=125)
    body = RichTextUploadingField(blank=True, null=True)
    category = models.CharField(
        max_length=20, choices=CATEGORY_CHOICES, default="watchlist"
    )

views.py

class BlogFilterView(LoginRequiredMixin, FilterListViewDate):
    model = Post
    filterset_class = PostFilter
    template_name = "dashboard/blog_filter.html"
    paginate_by = 5

    def get_queryset(self):
        # categories = ["ANALYSIS", "MILESTONE", "FEATURES", "TUTORIALS", "CAREERS", "COMMUNITY",]
        categories = ["Analysis", "Milestone", "Features", "Tutorials", "Careers", "Community",]
        queryset = Post.objects.filter(category__icontains=categories)
        print("queryset =", queryset)
        queryset1 = Post.objects.filter(category__icontains="Analysis").filter(category__icontains="Milestone") \
        .filter(category__icontains="Features").filter(category__icontains="Tutorials") \
        .filter(category__icontains="Careers").filter(category__icontains="Community")
        print("queryset1 =", queryset1)
        queryset2 = Post.objects.filter(category__icontains="Community")
        print("queryset2 =", queryset2)


        return queryset

Вы можете использовать оператор in для выбора всех постов, которые имеют одну из ваших категорий:

categories = ["Analysis", "Milestone", "Features", "Tutorials",
              "Careers", "Community"]
queryset = Post.objects.filter(category__in=categories)
Вернуться на верх