Как вариант -- использование сессий:
https://djbook.ru/rel1.9/topics/http/sessions.html
В сессию пользователя можно добавлять любые данные в виде ключ-значение, а равно удалять из неё любые данные.
Пример кода, обрабатывающего POST-запросы для временной регистрации, а так же удаления никнейма для анонимного пользователя:
def chat_login(request):
# Регистрируем псевдоним для чата на 30 дней
if 'register' in request.POST:
request.session.set_expiry(2592000) # устанавливаем время жизни сессии
request.session['username'] = request.POST['username']
# Удаляем псевдоним для чата из своей сессии
if 'unregister' in request.POST:
request.session['username'].pop(request.POST['username'])
Преимущества сессий в данном случае:
- не нужно переопределять какие-либо модели,
- можно хранить любые данные,
- минимум кода.
Недостатки:
- сложнее проконтролировать уникальность имён пользователей,
- у сессии должно быть время жизни (хотя его и можно продливать в любой вьюхе, обновив значение любого ключа).