假设我想为一个系统建模,其中一条数据可以有多个标签(例如,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/