如何按标签名称以及发布的帖子进行搜索

内斯

我有两个问题;第一个; 我如何通过标签名称标签模型进行搜索是manytomanyfield。最后一个; 如果发布了帖子,则按标签名称显示帖子。我使用此代码“ post_list = Post.objects.published()”来获取发布的帖子。但是,我不知道如何使用过滤器和发布

型号

class Tag(models.Model):
    tag_name = models.CharField(max_length=50, unique=True)
    tag_slug = models.SlugField(max_length=50, unique=True)

class PostQuerySet(models.QuerySet):
    def active(self):
        return self.filter(status__in=[Post.STATUS_PUBLISHED])

    def published(self):
        return self.filter(status=Post.STATUS_PUBLISHED)


class Post(models.Model):
    STATUS_DRAFT = 1
    STATUS_PUBLISHED = 2
    STATUSES = (
        (STATUS_DRAFT, 'Draft'),
        (STATUS_PUBLISHED, 'Published'),
    )
    category=models.ManyToManyField(Category)
    tag=models.ManyToManyField(Tag)
    user=models.ForeignKey(User,on_delete=models.CASCADE,verbose_name="Yazar",related_name='posts')
    title=models.CharField(max_length=120,verbose_name="Başlık")
    content=RichTextField(verbose_name="İçerik")
    created_date=models.DateTimeField(auto_now_add=True,verbose_name="Oluşturulma Tarihi")
    updated_date=models.DateTimeField(auto_now=True,verbose_name="Güncellenme Tarihi")
    image=models.ImageField(null=True,blank=True)
    slug=models.SlugField(max_length=130,unique=True)
    status = models.SmallIntegerField(choices=STATUSES)
    objects = PostQuerySet.as_manager()

views.py

def post_index(request):
    #post_list=Post.objects.published().order_by('-created_date')
    post_list=Post.objects.published()
    query=request.GET.get('q')
    if query:
        post_list=post_list.filter(
            Q(content__icontains=query)|
            Q(title__icontains=query) |
            Q(tag_name__icontains=query)| # doesn't work
            Q(user__first_name__icontains=query)).distinct()...
威廉·范昂塞姆

它应该是tag__tag_name(带有两个连续的下划线),并带有tag_name,因为那是您Tag模型字段的名称

def post_index(request):
    #post_list=Post.objects.published().order_by('-created_date')
    post_list=Post.objects.published()
    query=request.GET.get('q')
    if query:
        post_list=post_list.filter(
            Q(content__icontains=query)|
            Q(title__icontains=query) |
            Q(tag__tag_name__icontains=query)|
            Q(user__first_name__icontains=query)
        ).distinct()

但是,我建议将您重命名tag = ManyToManyField(Tag)tags = ManyToManyField(Tag),因为这样会ManyToManyField导致对象集合的产生,因此使用复数名称可能会更好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

幽灵帖子按标签名称过滤

为什么列表标签按字面意义使用标签名称,以及如何防止这种情况?

如何使用Python词典按标签名称对AWS实例进行分组?

按帖子数量对 Jekyll 标签进行排序

如何在iOS中解析html以获取其所有内容以及标签名称?

如何根据深度嵌套文档中的标签名称在 mongodb 中搜索键值?

无法使用标签上的行为按标签对帖子进行排序

如何发布链接onclick以及提交名称?

Rails按标题,正文和标签搜索帖子

如何打印标签名称jsoup

jQuery:如何更改标签名称?

如何从Paypal更改标签名称

如何从Button获取标签名称?

如何删除父标签名称?

如何更改woocommerce描述标签名称

Ghost筛选器帖子按标签=子弹名称

BeautifulSoup:按标签名称解析子级

JQuery元素按标签名称两次

NodeJS / Puppeteer-按标签名称获取元素列表

按类别和标签名称的Web爬网元素

如何按帖子元素对帖子数组进行排序?

文档-如何通过标签名称获取标签的值?

在使用App-Script的Gmail标签名称中使用getThreads()时,如何防止按主题或日期分组?

如何在SQLite中进行高级查询以按标签搜索文件?

Eclipse 打开资源对话框:如何按项目名称对搜索结果进行排序/排序?

Blogger按钮可随机进行“发布,搜索和合并标签”

如何编写自定义排序器,以在UI中按名称对springdoc swagger标签进行排序?

如何使数据表按标签搜索

按与当前帖子共享标签的数量对WordPress帖子进行排序