在模板上,当我打电话给person.health_issue时,我得到'1','2'而不是'腹痛','过敏症'。如何显示值('腹痛','过敏反应')而不是代码(1或2等)。
我在模板中也尝试了这个{{ person.get_health_issue_display }}
,它没有显示任何内容。
forms.py
HEALTH_USSUES = (
('1', 'Abdominal pain'), ('2', 'Anaphylaxis'), ('3', 'Asthma'),
('4', 'Bruising'), ('5', 'Chest pains'), ('6', 'Coughs or Colds')
)
class PersonActionsForm(forms.ModelForm):
action = forms.MultipleChoiceField(widget=forms.Select(), choices=HEALTH_USSUES, required=False)
models.py
class ReportPerson(models.Model):
report = models.ForeignKey(Report)
name = models.CharField('Name', max_length=100)
first_aid = models.BooleanField('First aid', default=False)
health_issue = models.IntegerField(default=0)
views.py
def report_template(request):
""""""
person = ReportPerson.objects.get(pk=person_id)
""""""
return render(request, 'event/print.html',
{
'person':person
})
任何人都可以告诉我如何做到这一点。
谢谢
答案 0 :(得分:1)
由于您没有在模型字段health_issue
中设置任何选项,因此您需要自己编写get_health_issue_display
方法,我将其命名为health_issue_display
,以便默认{{1方法没有被覆盖:
get_FOO_display
或者只是在模型字段中添加选项:
HEALTH_USSUES = (
(1, 'Abdominal pain'), (2, 'Anaphylaxis'), (3, 'Asthma'),
(4, 'Bruising'), (5, 'Chest pains'), (6, 'Coughs or Colds')
)
class ReportPerson(models.Model):
report = models.ForeignKey(Report)
name = models.CharField('Name', max_length=100)
first_aid = models.BooleanField('First aid', default=False)
health_issue = models.IntegerField(default=1)
def health_issue_display(self):
for c in HEALTH_USSUES:
if c[0] == self.health_issue:
return c[1]
现在你有health_issue = models.IntegerField(default=1, choices=HEALTH_USSUES)
。
get_health_issue_display
,而不是字符串(1, 'Abdominal pain')
。只是为了消除困惑。'1'
。将其更改为default=0