В django-rest-framework есть готовая аутентификация по токенам, но в модели токен связывается с юзером как OneToOneField (создаётся unique constraint). Для моей задачи нужна связь ForeignKey, чтобы с разных устройств у юзера был отдельный токен со своим временем жизни.
Как на лету пропатчить одну модель в drf?
В джанге у метакласса модели есть Model.add_to_class('fieldname', field)
, которым можно добавлять/изменять поля в уже описанных классах моделей, но заменить OneToOneField на ForeignKey им не получается, появляются конфликты (или надо пытаться лучше?).
Лезть самому в Model._meta.local_fields
страшновато, там кроме полей ещё много магии с созданием связей между моделями.
Чому нет готового метода "удолить филд полностью со всеми ссылками", чтобы затем добавить новый без конфликтов? Остаётся фолбек "скопировать drf целиком в свой проект и там заменить тип поля", но очень уж некрасиво.