#django
#django
Вопрос:
Я использую django с устаревшей базой данных, где я не могу изменить исходные столбцы таблицы. У меня есть похожие модели, которые имеют слегка отличающиеся имена полей. Следующая модель является примером.
class EURegister(models.Model):
record_id = models.AutoField(primary_key=True)
reg_no = models.CharField(max_length=45, blank=True, null=True)
company_name = models.CharField(max_length=300, blank=True, null=True)
В некоторых моделях reg_no
используется другое имя, например registration_id
. Следовательно, я должен получить доступ к атрибуту модели, переданному в качестве аргумента. Но я не могу его использовать, поскольку модель не позволяет использовать атрибуты, поскольку они были dict
ключами. Выдает следующую ошибку.
TypeError: 'EURegister' object is not subscriptable
Ответ №1:
Вы можете использовать getattr(…)
[python-doc]:
getattr(myeuregister, 'reg_no')
So getattr(x, 'y')
эквивалентно x.y
.
При этом, если разные модели (очень) похожи, может иметь смысл «объединить» эти модели в одну модель. Использование разных таблиц для одних и тех же типов объектов часто не очень хороший дизайн.