在django中有没有其他的方法来做链过滤?

zynd9foi  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(117)

我有一个名为news的django模型和另一个名为tag的django模型,它们之间存在多对多的关系。但是当我想通过几个标签来过滤我的新闻模型时,我需要做链过滤,当我试图通过一个标签列表来过滤新闻时,它是没有用的。还有别的办法吗?
这是我的models.py文件:

from django.db import models

# Create your models here.

class tag(models.Model):
    tag_name = models.CharField(max_length=200)

    def __str__(self):
        return self.tag_name

class news(models.Model):
    title = models.CharField(max_length=200)
    text = models.TextField()
    tags = models.ManyToManyField(tag)
    source = models.URLField()

    def __str__(self):
        return self.title

字符串
这是我用来过滤新闻的方法:

>>> news.objects.filter(tags__tag_name='tech').filter(tags__tag_name='politic')


而不是这样,我想做这样的事情:

>>> news.objects.filter(tags__tag_name__contains=['tech', 'plitics'])


而且我不得不提到,我正在使用sqlite数据库,我不能改变我的数据库。

6ju8rftf

6ju8rftf1#

from django.db.models import Q

tags_to_filter = ['tech', 'politics']
query = Q()
for tag in tags_to_filter:
    query |= Q(tags__tag_name=tag)

filtered_news = news.objects.filter(query)

字符串

相关问题