Если для авторизации используются разные поля, то никак по-другому не сделать я думаю, ищи какая в джанге базовая юзер модель, наследуй от нее и делай кастомные поля
Ну или передавай в авторизацию разные поля Def auth(un, pass): Один пользователь передает свое поле username, а другой например mail, читай кароче какие есть функции у юзера в джанге
Как вариант сделать для одной модели все нужные поля и поле is_writer, если True, то может писать посты. А при валидации проверять это поле, если True, то показывать доп. поля
в моделе делаешь доп поля необязательными, но в самой форме переопределяешь инит метод, если пользователь is_stuff=False то доп поля делаешь required=True