我正在尝试显示人类可读的choicefield标签。
def reminder(request, pk=None):
reminder = get_object_or_404(Reminder, pk=pk)
print(reminder.id) # printing correct value
print(reminder.get_notification_display())
return render(request, 'reminder.html', {'reminder': reminder, 'title': 'Reminder'})
但是它抛出了这个错误:
AttributeError: 'Reminder' object has no attribute 'get_notification_display'
这是模型:
class Reminder(models.Model):
provider_type = (
('Em', 'Email'),
('Sm', 'SMS'),
('De', 'Desktop'),
('Mo', 'Mobile'),
)
notification = ArrayField(models.CharField(choices=provider_type, max_length=2, default='Em'))
这是
get_FOO_display
上的文档-我缺少什么? 最佳答案
documentation说
对于每个设置了选项的字段,该对象将具有get_FOO_display()方法
但您没有为notification
设置任何choices。换句话说,您的类中需要一个最长两个迭代的NOTIFICATION_CHOICES
迭代。