#django #django-models #django-queryset
#django #django-модели #django-набор запросов
Вопрос:
Это единственный способ получить нужное мне значение:
User1.types1.r_q2.label
Я хочу сделать его динамичным, заменив field name
и textChoices
переменной. Как я могу это сделать?
Models.py:
class User1(models.Model):
class r_q1(models.TextChoices):
r_q2 = 'r_q2', 'second question'
r_q3 = 'r_q3', 'third question'
t_greeting = 't_greeting', 't_greeting'
f_passport = 'f_passport', 'Contact with a human f_passport'
r_q1 = models.CharField (
'How can I help you, today?1',
max_length=200,
choices=r_q1.choices, blank=True, null=False
)
Это работает, но когда я заменяю только fieldname
:
User1.types1[x].label
Когда я делаю это для textChoices
имени, это не работает и вызывает ошибку:
User1[y][x].label
ошибка:
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: 'ModelBase' object is not subscriptable
Примечание: У меня есть много текстовых вариантов в моем models.py . Я не включил их, поскольку они здесь не важны.
Ответ №1:
Я заставляю его работать, используя getattr()
.
getattr(User1, 'types1')['r_q2'].label
При использовании переменных:
y='types1'
x='r_q2'
getattr(User1, y)[x].label
Никаких проблем не будет.
Комментарии:
1. Спасибо, что вернулись и ответили, как только нашли решение.