尝试了解如何在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”。我做错了什么?
答案 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