Мне нужно использовать базу данных noSQL на Django, и среди списка неофициальных плагинов mongo я решил пойти с устаревшим mongoengine 0.9 из-за хорошей обратной связи и относительно всеобъемлющего documentation.Использование сессий с mongoengine в Django 1.9
После нескольких дней проб и ошибок, я могу подключиться к моему mongoDB, создать пользовательскую модель (документ), сохранить пользователя в БД и даже использовать функцию аутентификации Django, такую как authenticate()
, set_password()
.
Проблема возникает, когда я пытаюсь использовать login(request,user)
. Линия, которая выходит из строя в этом методе включает в себя:
request.session[SESSION_KEY] = user._meta.pk.value_to_string(user)
, учитывая, что документ пользователь Монго не имеет атрибутpk
вmeta
. Я могу пройти через это, изменив его наuser.id
напрямую, установив id по умолчанию Mongo какSESSION_KEY
.return get_user_model()._meta.pk.to_python(request.session[SESSION_KEY])
в_get_user_session_key(request)
. Который бросаетValidationError
, который говорит{{id}} must be an integer
. Dumpingget_user_model()
на shell возвращает mongo_auth.MongoUser и его_meta.pk
читает(AutoField id)
, что объясняет, почемуto_python
ожидает целочисленное значение.
Есть ли способ использования mongoengine для использования сеанса Django? Я установил mongoengine.django.sessions
в качестве механизма сеанса в своем settings.py
, но не уверен, что мне нужно что-то еще сделать.
На этом этапе обработки ошибок mongoengine, я действительно чувствую себя совершенно неуверенным в своей стабильности с Django, есть ли другой лучший вариант, который я должен рассмотреть?
Какую версию Django вы используете? – PetarP
@PetarP это в вопросе, Django 1.9 – tropicalfish
Позвольте мне ответить вам на этот вопрос, но дело в том, что 'mongoengine' построен для' django 1.5'. – PetarP