我正在尝试显示人类可读的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迭代。

10-05 19:54