在模板中显示模型的功能

时间:2018-03-27 05:40:41

标签: django

我正在尝试将数据功能集成到现有系统中,我基本上是Django的新手。我对这两个功能有点困惑。

models.py中的现有代码

@property
def some_func(self):
    return self.get_other_func_same_model_class()

我要添加的功能

def some_func2(self):
    return self.get_other_func_same_model_class()

views.py

class SchoolView(StandardPriceTierRequiredMixin,
                            SchoolStudentMixin,
                            ListView):
template_name = 'dashboard/grades.html'
url_name = 'edu:dashboard_grades'
paginate_by = None
model = GradeSubject

HTML

{% if some_func %}
{% if some_func.enrollee.enrollment_status == 'pending' %}
  <p>Sorry but <h1>{{ some_func.enrollee }} </h1> is still for pending status </p>
{% else %}
  <h1>{{ some_func.enrollee }}</h1>
  {% if some_func.enrollee.student_id %}
    <p>{% trans "Student ID" %}: {{ some_func.enrollee.student_id }} 
      {% if school_system.show_student_lrn %} 
       &nbsp;&nbsp;&nbsp;LRN
      {% endif %}
    </p>
    {{ student_details.block_section.name }}               
  {% endif %}

我现在正在玩它以查看两个函数的行为,所以我决定它们返回相同的函数。问题是,我可以将第一个函数调用到模板中,但我无法在第二个函数中执行此操作。

我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

来自文档:

  

property

     

也称为“托管属性”,也是Python的一个特性   版本2.2。这是实现其用法的属性的一种巧妙方法   类似于属性访问,但其实现使用方法   调用

普通方法与使用@property装饰器的方法之间的基本区别在于它会将方法转换为只读属性。 它不是django的核心概念。如果你看一下python中的任何类方法,你会看到你可以使用或不使用参数调用方法,而在属性中你不能执行任何这些操作

here

阅读详细文档

答案 1 :(得分:-1)

为第二个函数添加@property装饰器。