gpt4 book ai didi

django - QuerySet 过滤器 ArrayField 包含完全匹配

转载 作者:行者123 更新时间:2023-12-03 19:35:24 32 4
gpt4 key购买 nike

我有一个通常看起来像这样的模型:

class CategoryModel(models.Model):
categories = ArrayField(..)

假设我有两个类别,“ categoryA”和“ categoryB
categoryAcategories等于 [123, 562] , 和 categoryBcategories等于 [5, 32]
当我想查询 CategoryModel 时s 正好包含 5作为其中的一个项目 categories列表,我使用 CategoryModel.objects.filter(categories__icontain=5)
不幸的是,上面的查询同时返回 categoryAcategoryB , 不是 只是 categoryB .
执行此查询的正确方法是什么?

最佳答案

您可以使用 iexact ,

CategoryModel.objects.filter(categories__1__iexact=5)

这里 1与第一个元素完全匹配。

来自 docs :
from django.db import models
from django.contrib.postgres.fields import ArrayField

class Post(models.Model):
name = models.CharField(max_length=200)
tags = ArrayField(models.CharField(max_length=200), blank=True)

def __str__(self):
return self.name

Index transforms
>>> Post.objects.create(name='First post', tags=['thoughts', 'django'])
>>> Post.objects.create(name='Second post', tags=['thoughts'])

>>> Post.objects.filter(tags__0='thoughts')
<QuerySet [<Post: First post>, <Post: Second post>]>

>>> Post.objects.filter(tags__1__iexact='Django')
<QuerySet [<Post: First post>]>

>>> Post.objects.filter(tags__276='javascript')
<QuerySet []>

关于django - QuerySet 过滤器 ArrayField 包含完全匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49905623/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com