0

试图了解如何在 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})

测试.html

{{ o.test }}

我的页面是空白的,但它应该显示“测试”。我究竟做错了什么?

4

1 回答 1

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 }}

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

在此处阅读有关经理的更多信息

于 2013-10-10T01:52:24.797 回答