在我的views.py中,我希望拥有该客户端所有竞赛的查询集,并在竞争对手的客户领域使用related_name
我想我有两种方法:
假设这两个模型是在views.py中导入的
1。resultSet=Competition.objects.filter(host=client)
2。resultSet=client.myCompetition
我有两个问题:
1)在我的view.py中,我实际上是尝试第二种方式,我写道:client0=request.user.client_profile
,而django说django相关不存在。
2)我想知道如何在Django中实现关系管理器,是吗? 1))一些指针存储在关系管理器中,因此它可以更快地访问数据 要么 2))扫描数据库并基本上与"过滤"?
相同我正在使用mysql。
谢谢!
答案 0 :(得分:0)
在Django中,每个Model类都有一个Manager实例objects
,这些方法通常返回一个QuerySet实例(并非所有Manager的方法都返回QerySet)。 QuerySet是一个惰性对象,负责创建在您实际请求数据时发送到底层数据库的查询(SQL)。因此,Manager只是初始化正确QuerySet的助手。
关于相关字段,该机制的工作方式相同,而不是将一个帮助程序与模型关联,您有一个与ModelField关联的帮助程序。关键是总是得到一个QuerySet。
只要语义相同,使用一个或另一个通常只有一点味道(可能是代码可读性),但是如果你关心性能,你总是可以检查生成的QuerySet实际发布到数据库的内容通过印刷
print my_query_set.query
当您尝试访问数据时,您将拥有将发送到数据库的SQL。