2

模型.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')

查看.py代码:

cell = table.rows[2].cells[0]
formatted_status = [astatus.get_risk_issue_severity_display() for astatus in activitylist.values_list('activityStatus', flat=True)]
cell.paragraphs[0].text = ', '.join(formatted_status)

我收到错误代码:“unicode”对象没有属性“get_risk_issue_severity_display”

我究竟做错了什么?除了正确答案,我什么都试过了。我假设这里的 TypeError 问题非常小

4

2 回答 2

1

文档中的 Model.get_FOO_display() 说应该将 FOO 作为字段名称,因为您的案例字段名称为 projectRiskIssueSeverity 而不是 risk_issue_severity。

并且活动列表中似乎缺少对象。

https://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.get_FOO_display

https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.values_list

于 2015-01-21T23:02:31.807 回答
1

您不能像尝试那样使用带有字符串值的 get_FOO_display() 。您需要模型的一个实例才能使其工作。正如您所拥有的,您的代码正在转换为:

'L'.get_projectRiskIssueSeverity_display()

这就是“无属性”错误的来源。

如果您只想要一个可能值的列表,最好RiskIssue.RISK_ISSUE_SEVERITY直接从视图中使用并将其转换为列表或您需要的任何内容。

于 2015-01-22T10:28:53.533 回答