Вы можете реализовать __getitem__
и __setitem__
в вашей модели, которые затем вызывают getattr(..)
и setattr(..)
. Например, вы можете исправить это в классе Model
:
from django.db.models import Model
Model.__getitem__ = lambda x, y: getattr(x, y)
Model.__setitem__ = lambda x, y, v: setattr(x, y, v)
Но обычно это , а не - хорошая идея иметь два способа достижения чего-либо sh. Как указано в Дзэн Python:
Должен быть один - и предпочтительно только один - очевидный способ сделать это.
Если вы хотите изменить атрибут на основе строки, содержащей имя, вы можете просто реализовать это с помощью:
<b>setattr(</b>user, 'firstname', 'John'<b>)</b>