auth.User
является особым случаем, поскольку модель User привязана ко многим частям Django, и изменить это сложно (хотя и не невозможно, как отмечали другие). Мой лучший совет - спросить, почему вы не хотите изменять исходный код Django. Вы можете получить исходный текст либо для заголовка ветки devel, либо для получения версии с тегом, соответствующей нумерованному выпуску. Измените код по своему усмотрению и используйте некоторую комбинацию svn update
, svn diff
и svn patch
для переноса ваших изменений.
Далее, в вашем коде возможны модификации модулей contrib, поскольку Python интерпретируется и динамически типизируется. Если вы сделаете это, вам нужно будет принять во внимание порядок разбора / обработки, поскольку некоторые операции уже могли использовать исходный модуль. Ниже приведен пример, который я получил от кого-то другого (вероятно, здесь, на SO), как добавить удобную прямую ссылку из User
к связанному Profile
объекту:
from django.db.models import Model
from django.contrib.auth.models import User
class UserProfile(Model):
user = ForeignKey(User, unique=True)
phone = CharField(verbose_name="phone number", blank=False, max_length='20')
User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])
Я не думаю, что эта стратегия будет работать для добавления / изменения ModelFields
в django.contrib.auth.models.User
, однако.
Наконец, для вашего конкретного примера связывания групп с пользователем вы должны увидеть, возможно ли это, создав модель UserProfile . Мое первоначальное предположение, что это должно быть довольно легко.