Django:自定义函数值未显示

时间:2013-10-10 01:36:13

标签: python django django-models django-views django-custom-manager

尝试了解如何在Django中创建自定义函数。我有以下内容:

模型:

class OptionManager(models.Manager):
    def test(self):
        test = "test"
        return test

class Option(models.Model):
    value = models.CharField(max_length=200)
    objects = OptionManager()
    def __str__(self):
        return self.value

视图:

def questn(request, question_id):
    o = Option.objects.filter(question=question_id).annotate(num_votes=Count('answer'))
    return render(request, 'test.html', {'o':o})

的test.html

{{ o.test }}

我的页面是空白的,但应显示“test”。我做错了什么?

1 个答案:

答案 0 :(得分:2)

它不起作用的原因是,自定义方法不应该在管理器上,而应该在模型本身上

class Option(models.Model):
    value = models.CharField(max_length=200)
    objects = OptionManager()
    def __str__(self):
        return self.value

    def test(self):
        test = "test"
        return test

现在,对于你要做的事情,它应该是

{{ o.objects.test }}

请注意,这是自定义方法的错误用法。管理员通常用于自定义过滤选项。

详细了解managers here