如何在 django 和 MySQL 中过滤数据库中的两个字段?

Posted

技术标签:

【中文标题】如何在 django 和 MySQL 中过滤数据库中的两个字段?【英文标题】:How can i doing for filtering for two fields in database in django and MySQL? 【发布时间】:2015-04-03 19:01:52 【问题描述】:

我的问题是我想将两个字段(“可见”、“用户”)过滤到我的数据库中,以便在我的 html 页面中查看结果。

我有一个数据库 (bd_mission),并且有字段,我想过滤 Visible=Trueuser=request.user.username,并且只能使用一个字段。

我的代码是:

def misiones(request):
    mission = bd_mission.objects.filter(user=request.user.username)
    return render_to_response('misiones.html','mission_template': mission,context_instance=RequestContext(request))

我想要怎么做:

mission = bd_mission.objects.filter((Visible=True)&(user=request.user.username))

谢谢!对不起,我的英语不好 ! ^^'

【问题讨论】:

【参考方案1】:

只需将多个参数传递给filter() 方法:

mission = bd_mission.objects.filter(Visible=True, user=request.user.username)

附带说明:filter()/exclude() 方法可以以任何组合进行链接,因此上面的代码可以写成:

bd_mission.objects.filter(Visible=True).filter(user=request.user.username)

两种情况的结果都是一样的。

如果你想要OR 逻辑(Visible=Trueuser=username),那么你可以使用Q objects。

【讨论】:

一个有效的替代方案是mission = bd_mission.objects.filter(user=request.user.username).filter(Visible=True)。如果在输出查询中不需要 JOINs,则它们是相同的。 您可能想提到在 FK 和 RFK 上下文中使用时两者之间存在细微差别。 简单.. -.-' xD 谢谢! @dmg 我认为现在不是将 Pedro 与很多细节混淆的有效时间。恕我直言,向后关系和注释对于新手来说是相当复杂的主题。

以上是关于如何在 django 和 MySQL 中过滤数据库中的两个字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 数据库请求中进行数学过滤?

Django 慢查询:将 django 过滤语句连接到数据库日志中的慢查询

Django模板如何使用标签和模板过滤器从json dict中获取数据

如何过滤和统计 DJANGO 模板中的对象?

Python+Django+Mysql志愿者活动推荐系统 基于用户项目内容的协同过滤推荐算法 SimpleWebActivityCFRSPython python实现协同过滤推荐算法实现源代码下载

Django-查询过滤器,具有外来关系