请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

课程机构首页,如何获取教师的最新课程?

如红框所示.

//img1.sycdn.imooc.com//szimg/5a5af9f90001e17313310945.jpg

views.py

#机构首页
class OrgHomeView(View):
    def get(self,request,org_id):
        current_page = "home"
        course_org = CourseOrg.objects.get(id=int(org_id))

        # 点击量加1
        course_org.click_nums += 1
        course_org.save()

        all_courses = course_org.course_set.all()[:3]
        all_teachers = course_org.teacher_set.all()[:2]

        # 判断是否已收藏
        has_fav = HasFav(course_org.id,request)

        return render(request,'org-detail-homepage.html',{
            "all_courses": all_courses,
            "all_teachers": all_teachers,
            "course_org": course_org,
            "current_page": current_page,
            "has_fav": has_fav
        })

org-detail-homepage.html

<div class="right companycenter layout" >
        <div class="head">
            <h1>机构教师</h1>
            <a class="green fr more" href="org-detail-teachers.html">查看更多  >  </a>
        </div>
        {% for teacher in all_teachers %}
        <div class="diarys">
            <div class="module5 share company-diary-box" style="padding:10px 0;">
                <div class="left">
                    <img class="pic" src="{{ MEDIA_URL }}{{ teacher.image }}"/>
                    <p>昵称:{{ teacher.name }}</p>
                </div>
                <div class="right">
                    <div class="top">
                        <div class="fl">
                            <a href=""><h1>JAVA开发 </h1></a>
                            <span>发表于:2015-10-12</span>
                        </div>
                    </div>
                    <div class="middle" style="border-bottom:0;">课程介绍</div>
                </div>
            </div>
        </div>
        {% endfor %}

    </div>


如果我在想这一页,获取 教师的最新课程( 就是 <h1>JAVA开发</h1> 那一栏) ,应该怎么写好?

现在我的疑问点是 , 教师的显示是通过. {% for teacher in all_teachers %}

如果我 在后端,在给一个变量, ,那这个变量就不好套进  {% for teacher in all_teachers %}  里面了.(实际上是不懂怎么套)

如果仅通过前端,  那应该如何写呢?

正在回答 回答被采纳积分+3

1回答

提问者 XO鸡丝 2018-01-14 20:23:34

调整了一下代码,用了过滤器,但是感觉我这样的写法,很不高效,-----每个过滤器都会重新查询一次数据库,不能重用其结果.,很浪费资源.

但是如果不这样,用又因为在 {% for %}里,没有好的方法传输单个变量.

SO,老师那边有什么好的建议吗?

<div class="right companycenter layout" >
        <div class="head">
            <h1>机构教师</h1>
            <a class="green fr more" href="org-detail-teachers.html">查看更多  >  </a>
        </div>
        {% for teacher in all_teachers %}
        <div class="diarys">
            <div class="module5 share company-diary-box" style="padding:10px 0;">
                <div class="left">
                    <img class="pic" src="{{ MEDIA_URL }}{{ teacher.image }}"/>
                    <p>昵称:{{ teacher.name }}</p>
                </div>
                <div class="right">
                    <div class="top">
                        <div class="fl">
                            <a href=""><h1>{{ teacher.id|get_teacher_new_class }}</h1></a>
                            <span>发表于:{{ teacher.id|get_teacher_new_class_add_time }}</span>
                        </div>
                    </div>
                    <div class="middle" style="border-bottom:0;">{{ teacher.id|get_teacher_new_class_desc }}</div>
                </div>
            </div>
        </div>
        {% endfor %}

    </div>


organiztions/templatetags/org_filter.py

# -*- coding:utf-8 -*-
from django import template
register = template.Library()

# 根据老师的ID,提取关于这个老师的最新课程
@register.filter
def get_teacher_new_class(key):
    from courses.models import Course
    new_class = Course.objects.filter(teacher=key).order_by('-add_time')[:1]
    if new_class.exists():
        return new_class[0].name
    else:
        return u'暂无课程'

@register.filter
def get_teacher_new_class_add_time(key):
    from courses.models import Course
    new_class = Course.objects.filter(teacher=key).order_by('-add_time')[:1]
    if new_class.exists():
        return new_class[0].add_time
    else:
        return u"ヽ(・ω・。)ノ找不到呢...."

@register.filter
def get_teacher_new_class_desc(key):
    from courses.models import Course
    new_class = Course.objects.filter(teacher=key).order_by('-add_time')[:1]
    if new_class.exists():
        return new_class[0].desc
    else:
        return u"ヽ(*´Д`*)ノ还是找不到呢...."


0 回复 有任何疑惑可以回复我~
  • bobby #1
    用order_by  all_courses = course_org.course_set.all().order_by("-add_time")[:3]
    回复 有任何疑惑可以回复我~ 2018-01-15 11:05:52
  • 提问者 XO鸡丝 回复 bobby #2
    额,这个只是筛选出  机构最新的课程。
    而不是机构所属老师的最新课程。
    回复 有任何疑惑可以回复我~ 2018-01-15 13:16:07
  • bobby 回复 提问者 XO鸡丝 #3
    那你直接通过先取到teacher然后获取该teacher的所有课程再排序就行了
    回复 有任何疑惑可以回复我~ 2018-01-16 17:33:09
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信