Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Django中筛选关系项?_Django_Django Models_Django Managers - Fatal编程技术网

如何在Django中筛选关系项?

如何在Django中筛选关系项?,django,django-models,django-managers,Django,Django Models,Django Managers,假设我有两个模型班。类别有一个名称和多个标记,标记有一个名称,可以是可见的,也可以是不可见的 编辑:假设我有一个类别列表,对于每个类别,我只想显示visible=True的标记,我应该如何继续 class Category(models.Model): name = models.CharField(max_length=255, unique=True) tags = models.ManyToManyField(Tag) class Ta

假设我有两个模型班。类别有一个名称和多个标记,标记有一个名称,可以是可见的,也可以是不可见的

编辑:假设我有一个类别列表,对于每个类别,我只想显示visible=True的标记,我应该如何继续

    class Category(models.Model):
         name = models.CharField(max_length=255, unique=True)
         tags = models.ManyToManyField(Tag)

    class Tag(models.Model):
         name = models.CharField(max_length=255, unique=True)
         visible = models.BooleanField(default=False)
大概是这样的:

category_list = Category.objects.all() #Or you can filter according to your choice
for c in category_list:
  tagnames = c.tags.filter(visible=True).values("name")
  print c.name, tagnames

您想知道可以获取结果的查询吗?如果是查询,则这可能是一个Category.objects.filter(tags=“True”)这是“丑陋的”,因为它将对您的数据库执行1+N次查询(其中N是所选类别的数量)。为了避免这种情况,请执行category_list=category.objects.prefetch_相关('tags')。这将完成第1行(1db查询)中的所有工作,然后for循环将只读取python变量。