Управление сессиями для неаутентифицированных пользователей - PullRequest
1 голос
/ 18 июня 2011

У меня странный вопрос об управлении сессиями.

Я реализовал цепочку форм, и после заполнения форм модель сохраняется в базе данных, но в этой модели есть поля типа create_user, update_user и т. Д.

Чтобы заполнить эти user поля, конечно, должен быть аутентифицированный пользователь. Однако моя цепочка форм также может быть заполнена анонимным пользователем.

Если этот анонимный пользователь регистрируется или входит в систему до сброса сеанса, его user_id следует назначить полям create_user и update_user.

Каков наилучший способ реализации такой системы?

Надеюсь, я объясню ситуацию.

Спасибо

Ответы [ 2 ]

1 голос
/ 18 июня 2011

Когда ваша модель сохранена, сохраните экземпляр модели в списке в вашем сеансе, например:

views.py:

...
form = DataForm(request.POST)
if form.is_valid():
    instance = form.save()
    instances = request.session.get('filed_instances', [])
    instances.append(instance)
    request.session['filed_instances'] = instances

в методе входа в систему после входа в систему (зависит отвы можете обновить их следующим образом:

instances = request.session.get('filed_instances')
if instances:
    for instance in instances:
        instance.create_user = request.user
        instance.update_user = request.user
        instance.save()
0 голосов
/ 18 июня 2011

Поместите свое имя пользователя в переменную сессии.В начале сеанса, если эта переменная не установлена, задайте для нее пустую строку, пустое значение или любое другое значение, которое представляет для вас анонимного пользователя.Чем при сохранении данных в базе данных использовать это имя в качестве имени пользователя для создания / обновления.Я надеюсь, что это было полезно:)

...