python – 用django连接表
发布时间:2020-12-20 12:37:12 所属栏目:Python 来源:网络整理
导读:queryObj = Rating.objects.select_related( 'Candidate','State','RatingCandidate','Sig','Office','OfficeCandidate').get( rating_id = ratingId,ratingcandidate__rating = ratingId,ratingcandidate__rating_candidate_id = officecandidate__office
queryObj = Rating.objects.select_related( 'Candidate','State','RatingCandidate','Sig','Office','OfficeCandidate').get( rating_id = ratingId,ratingcandidate__rating = ratingId,ratingcandidate__rating_candidate_id = officecandidate__office_candidate_id) 这行给了我一个错误.我正在尝试使用主键和常规ID链接许多不同的表.最后一个选择是问题: ratingcandidate__rating_candidate_id = officecandidate__office_candidate_id. 我需要跳过才能获得所有数据. 解决方法
不要试图“加入”表格.这不是SQL. 您必须执行多次获取才能从许多不同的表中获取数据. 不要担心select_related,直到你可以证明你有瓶颈. 只需根据需要从各个类中进行各种GET. 让我们关注候选人和评级. class Rating( Model ): ... class Candidate( Model ): rating = Models.ForeignKey( Rating ) 做这个. r = Rating.objects.get( id=rating_id ) c = r.candidate_set.all() 这将获得评级和所有具有该评级的候选人.这实际上是SQL连接的内容:它是两次提取.在Django ORM中,只需尽可能简单地写两个提取.让Django(和你的数据库)为你缓存一些东西. 要在模板表单的单行中显示多个表的元素,请执行此操作. 在视图中: r = Rating.objects.get( id=rating_id ) return render_to_response( some_form,{ 'rating':r } ) 在模板中: Rating: {{rating}}. Candidates: {% for c in rating.candidate_set.all %} {{c}} {%endfor%} 等等. 您只需在模板中的对象中“导航”以显示所请求的信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |