简体   繁体   English

Django Choices显示值

[英]Django Choices Display Values

Model.py: 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 code: 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)

I am getting the error code: 'unicode' object has no attribute 'get_projectRiskIssueSeverity_display' 我收到错误代码: 'unicode' object has no attribute 'get_projectRiskIssueSeverity_display'

What am I doing wrong? 我究竟做错了什么? I have tried everything except the correct answer. 除了正确的答案,我已经尝试了所有方法。 Very small TypeError problem here I assume activitylist is a unicode object and does not need activitylist.objects before it. 这里的TypeError问题非常小,我假设activitylist是一个unicode对象,并且在它之前不需要activitylist.objects。

The issue here is: the astatus.get_projectRiskIssueSeverity_display() , This is not working as expected according to https://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.get_FOO_display 这里的问题是: astatus.get_projectRiskIssueSeverity_display() ,根据https://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.get_FOO_display ,此操作无法按预期工作

Note that get_FOO_display() is an instance method on the model. 请注意, get_FOO_display()是模型上的实例方法。 .values_list() doesn't return any model instances, so the value won't have any get_FOO_display() methods. .values_list()不返回任何模型实例,因此该值将没有任何get_FOO_display()方法。

You can use get_FOO_display() on model instances only. 您只能在模型实例上使用get_FOO_display() Use intermediate dictionary to get the display name from the pure status value: 使用中间词典从纯状态值获取显示名称:

severity_d = dict(RiskIssue.RISK_ISSUE_SEVERITY)
formatted_status = [severity_d[astatus] for astatus in
                    activitylist.values_list('activityStatus', flat=True)]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM