Django Choices Ссылка в представлении

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_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 здесь я предполагаю

2 ответа

Решение

Вы не можете использовать get_FOO_display() со строковым значением, как вы пытаетесь это сделать. Вам понадобится экземпляр модели для его работы. Как вы понимаете, то, на что переводит ваш код, выглядит примерно так:

'L'.get_projectRiskIssueSeverity_display()

Вот откуда возникает ошибка "без атрибута".

Если вы просто хотите получить список возможных значений, вам лучше использовать RiskIssue.RISK_ISSUE_SEVERITY непосредственно из представления и преобразования его в список или все, что вам нужно.

Model.get_FOO_display() в документации говорит, что в качестве имени поля в качестве имени поля должно быть указано FOO, а в вашем случае имя поля - ProjectRiskIssueSeverity, а не risk_issue_severity.

и объекты, кажется, отсутствуют в списке активности.

https://docs.djangoproject.com/en/dev/ref/models/instances/

https://docs.djangoproject.com/en/dev/ref/models/querysets/

Другие вопросы по тегам