Django 查询字段值是否为多项选择之一

标签 django

假设我想为一个系统建模,其中一条数据可以有多个标签(例如,StackOverflow 上的一个问题就是数据,它的标签集就是标签)。我可以使用以下代码在 Django 中对其进行建模:

class Tag(models.Model):
    name = models.CharField(10)

class Data(models.Model):
    tags = models.ManyToManyField(Tag)

给定一组字符串,查找所有将其中一个字符串作为标签列表中的标签名称的数据对象的最佳方法是什么。我想出了以下内容,但不禁想到还有一种更“Djangonic”的方式。有什么想法吗?

tags = [ "foo", "bar", "baz" ]
q_objects = Q( tags__name = tags[0] )
for t in tags[1:]:
    q_objects = q_objects | Q( tags__name = t )
data = Data.objects.filter( q_objects ).distinct()

最佳答案

Use the __in feature of queryset lookups .具体来说,您可以在示例中使用 tags__name__in,如文档所示。

关于Django 查询字段值是否为多项选择之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2815289/

相关文章:

python - django 中的 LDAP 身份验证错误

django - 控制 Django auth 用户对特定对象实例的访问

python - 如何并行运行多个 celery 任务?

django - Django:不允许按%filter%进行过滤

python - 500错误: null value in column "timeline_id" violates not-null constraint

python - IPython 找不到 Shell.IPShell 类

javascript - 用于用户登录/注册的 Django 模式 - 表单渲染问题

Django 模板中动态生成表单的 Javascript 验证

django - 在 VSCode 调试器中设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量

python - Django - 指定 Django 管理员应该使用哪个模型管理器