Python 将mySQL查询更改为Django

Python 将mySQL查询更改为Django,python,mysql,django,django-models,Python,Mysql,Django,Django Models,我很难将下面的MySQL查询更改为Django查询 SELECT * FROM dashboard_db.dashboard_system ds JOIN dashboard_db.dashboard_userpreference up ON ds.id = up.system_id WHERE username = "<user>" 我一直在尝试使用工会和其他一些选择。我知道执行原始SQL查询是一种选择。但是,我想知道是否可以使用Django样式的查询执行联接。我假设您想要系

我很难将下面的MySQL查询更改为Django查询

SELECT * FROM dashboard_db.dashboard_system ds 
JOIN dashboard_db.dashboard_userpreference up 
ON ds.id = up.system_id
WHERE username = "<user>"

我一直在尝试使用工会和其他一些选择。我知道执行原始SQL查询是一种选择。但是,我想知道是否可以使用Django样式的查询执行联接。

我假设您想要
系统
s,其中至少有一个对应的
用户首选项
s
用户名
是给定的

我们可以使用该模型的名称和两个连续的下划线,通过反向查询集进行查询:

System.objects.filter(userpreference__username='<user>')

因此,我假设您想要
系统
s,其中相应的
用户首选项
用户名
是给定的用户名?是的,您是正确的。用户名也是given@Haytes:我添加了一个注释,说明某些
系统可能会多次出现,以及如何避免这种情况(您可能对此感兴趣)。这也很有帮助,再次感谢您的快速响应。
System.objects.filter(userpreference__username='<user>')
# systems occur *at most* once
System.objects.filter(userpreference__username='<user>').distinct()