Model.py:
class RiskIssue(models.Model):
RISK_ISSUE_SEVERITY = (
('L', 'Low'),
('M', 'Medium'),
('H', 'High'),
)
projectRiskIssueSeverity = models.CharField("Risk/Issue Severity",
max_length=1, choices=RISK_ISSUE_SEVERITY, default='L')
View.py代码:
cell = table.rows[2].cells[0]
formatted_status = [astatus.get_projectRiskIssueSeverity_display() for
astatus in activitylist.values_list('activityStatus', flat=True)]
cell.paragraphs[0].text = ', '.join(formatted_status)
我收到错误代码:'unicode' object has no attribute 'get_projectRiskIssueSeverity_display'
我做错了什么?除了正确的答案,我已经尝试了一切。这里非常小的TypeError问题我假设activitylist
是一个unicode对象,在它之前不需要activitylist.objects。
此处的问题是:astatus.get_projectRiskIssueSeverity_display()
,根据https://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.get_FOO_display
答案 0 :(得分:2)
请注意,get_FOO_display()
是模型上的实例方法。 .values_list()
没有返回任何模型实例,因此该值不会有任何get_FOO_display()
方法。
答案 1 :(得分:2)
您只能在模型实例上使用get_FOO_display()
。使用中间字典从纯状态值中获取显示名称:
severity_d = dict(RiskIssue.RISK_ISSUE_SEVERITY)
formatted_status = [severity_d[astatus] for astatus in
activitylist.values_list('activityStatus', flat=True)]