Как мне получить строковое значение кортежа в Django - PullRequest
2 голосов
/ 06 марта 2020

Это звучит как вопрос noob, я просто хочу спросить, как мне получить строковое значение этого кортежа.

USER_TYPE_CHOICES = (
    (1, 'PQA'),
    (2, 'Tester'),
    (3, 'Test Lead'),
    (4, 'Test manager'),
    (5, 'Senior Test Manager'),
    (6, 'admin'),
)
user_type = models.PositiveSmallIntegerField(choices=USER_TYPE_CHOICES)

Когда я вызываю значение как:

<h1> {{ user.user_type }} </h1>

Он отображается как значение типа int, а не как строка.

Звучит очень просто, но я не могу найти его в документации python.

Ответы [ 3 ]

1 голос
/ 06 марта 2020

При использовании PositiveSmallIntegerField будут отображаться только номера индексов, вы можете использовать models.CharField()

USER_TYPE_CHOICES = (
    ('PQA', 'PQA'),
    ('Tester', 'Tester'),
    ('Lead', 'Test Lead'),
    ('Manager', 'Test manager'),
    ('SeniorManager', 'Senior Test Manager'),
    ('Admin', 'admin'),
)

user_type = models.CharField(max_length=20, choices=USER_TYPE_CHOICES)

. Возможно, вам потребуется заново создать базу данных и выполнить операции миграции, следуя этой ссылке , чтобы сделать новый выбор строк работает.

0 голосов
/ 06 марта 2020

Для этого я предпочитаю использовать метод для получения атрибута и константы для объявления выбора, например Django документация .

Как в этом примере:

Class ModelName(models.Model):
    ...
    PQA = 1
    TESTER = 2
    TEST_LEAD = 3
    TEST_MANAGER = 4
    SENIOR_TEST_MANAGER = 5
    ADMIN = 6
    USER_TYPE_CHOICES = (
        (1, 'PQA'),
        (2, 'Tester'),
        (3, 'Test Lead'),
        (4, 'Test manager'),
        (5, 'Senior Test Manager'),
        (6, 'admin'),
    )
    user_type = models.PositiveSmallIntegerField(choices=USER_TYPE_CHOICES)

    def get_user_type(self):
        return dict(self.USER_TYPE_CHOICES).get(self.user_type)

В шаблоне:

<h1> {{ user.get_user_type }} </h1>

Это позволяет вам использовать константы в вашем коде:

if user_instance.user_type is ModelName.TESTER:
    ...

Что легче читать.

0 голосов
/ 06 марта 2020

попробуйте

USER_TYPE_CHOICES = (
    ('PQA', 'PQA'),
    ('Tester', 'Tester'),

)
user_type = models.PositiveSmallIntegerField(choices=USER_TYPE_CHOICES)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...