Я не эксперт ни в python, django, ни в базе данных, но несколько недель назад я столкнулся с чем-то похожим, и на #django кто-то посоветовал мне использовать Generic для достижения этой цели.
Я создалМодель UserProfile, которая нравится (через OneToOnefield) «истинному» профилю, и с использованием contrib.content-type и родового отношения я могу использовать несколько различных типов porfile.
Обратите внимание, что это должно работать для васесли вы не боитесь ударить вашу базу данных еще раз по каждому get_profile ().
Альтернативой может быть создание большой таблицы, содержащей все поля для всех типов профилей, и использование некоторого типа хука (или переопределение пользовательского сохранения ()) для проверки удаленных полей в соответствии с типом профиля.Но мне это кажется сложным, особенно если вы хотите иметь много разных типов профилей.
Другой альтернативой может быть создание производного настраиваемого поля TextField и использование его в качестве хранилища для словаря, который вы выбираетесохраните и откройте его при загрузке.При некотором взломе вы наверняка сможете сопоставить некоторые атрибуты модели с ключом словаря.Это дало бы большую гибкость.
Бесплатный совет для вас: я также использую приборы для тестирования своего приложения и забыл проверить, был ли необработанный параметр сигнала post_save True, чтобы предотвратить выполнение создания UserProfile при использовании управления.py loaddata.Поскольку я закодировал создание «истинного» профиля в моем обратном вызове post_save, исключение, что за странность, пока я не выясню, что происходит.
Полезный ресурс: