加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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.

我需要跳过才能获得所有数据.

解决方法

I’m trying to get many different tables that are linked by primary keys and regular ids.

不要试图“加入”表格.这不是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%}

等等.

您只需在模板中的对象中“导航”以显示所请求的信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读