Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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
Sql 使用Q的Django查询_Sql_Django_Django Views_Django Q - Fatal编程技术网

Sql 使用Q的Django查询

Sql 使用Q的Django查询,sql,django,django-views,django-q,Sql,Django,Django Views,Django Q,我有以下几点 项目模型: class Project(models.Model): creator = models.ForeignKeyField(settings.AUTH_USER_MODEL) name = models.CharField(max_lenght=200) co_workers = models.ManyToManyField(settings.AUTH_USER_MODEL) 表格用户: id_user username 1 Fr

我有以下几点

项目模型:

class Project(models.Model):
    creator = models.ForeignKeyField(settings.AUTH_USER_MODEL)
    name = models.CharField(max_lenght=200)
    co_workers = models.ManyToManyField(settings.AUTH_USER_MODEL)
表格用户:

id_user username
 1       Frank
 2       Steve
 3       Eddie
表项目:

id_project project_name id_creator
 1          project 1       1     
 2          project 2       1
 3          project 3       1
 4          project 4       1   
表projects\U users(m2m)此表适用于同一项目的其他工作人员:

id_user  id_project
 2         1
 3         1
 2         2
 3         2
当我进行以下查询时,我得到:

>>>Project.objects.filter(creator=1)

[project 1, project 2, project 3, project 4]

>>>Project.objects.filter(co_workers=1)

[]
这很好,但当我把:

>>>Project.objects.filter(Q(co_workers=1)| Q(creator=1))

[Project 1, Project 1, Project 2, Project 2, Project 3, Project 4]
我希望得到:

[项目1、项目2、项目3、项目4]


我做错了什么?

您两次获得
project1
project2
的原因是因为您的
条件仍然正确地计算了这两个查询。您需要在查询集的末尾使用
distinct()
方法

Project.objects.filter(Q(co_workers=1)| Q(creator=1)).distinct()

太棒了,很高兴它有帮助。