создать новую таблицу с нужными полями
В целом - относительно рабочий, пусть и слегка грубоватый, на мой взгляд, вариант.
добавить новые поля прямо в таблицу auth_user?
1. Как вы себе это представляете? Переопределять данные на уровне загружаемого модуля - ужасная идея. Как минимум потому-что при размещении на сервере все зависимости придется ставить заново.
2. Почему-бы не наследовать модель юзера и в ней уже добавить нужные поля, как-то так:
# models.py
def get_file_path(instance, filename):
"""
get_file_path - генерирует случайное имя для аватара
"""
ext = filename.split('.')[-1]
filename = "%s.%s" % (uuid.uuid4(), ext)
return os.path.join('avatars/%Y/%m/%d/', filename)
....
class UserAccount(AbstractUser):
"""
Расширенная модель пользователя. Добавлено
отчество, аватар и необязательный внешний
ключ к учебной группе.
"""
avatar = models.ImageField(verbose_name='Аватар',
upload_to=get_file_path, blank=True)
patronymic_name = models.CharField(verbose_name='Отчество',
max_length=150,
blank=True)
study_group = models.ForeignKey(StudyGroup, on_delete=models.PROTECT,
blank=True, null=True,
verbose_name='Учебная группа')
# settings.py
AUTH_USER_MODEL = 'accounts.UserAccount'