Единственный способ изменить $type
данных - выполнить обновление данных, в которых данные имеют правильный тип.
В этом случае похоже, что вы пытаетесь измените значение $type
с 1 (double) на 2 (строка) .
Так просто загрузите документ из БД, выполните трансляцию (new String(x)
), а затем сохраните документ снова.
Если вам нужно сделать это программно и полностью из оболочки, вы можете использовать синтаксис find(...).forEach(function(x) {})
.
В ответ на второй комментарий ниже , Измените поле bad
от числа до строки в коллекции foo
.
db.foo.find( { 'bad' : { $type : 1 } } ).forEach( function (x) {
x.bad = new String(x.bad); // convert field to string
db.foo.save(x);
});
Когда вы выполняете POST на ^accounts/password/reset/$
, запускается функция django.contrib.auth.views.password_reset . Для проверки электронной почты будет использоваться класс по умолчанию django.contrib.auth.forms.PasswordResetForm .
Вы должны заметить, что электронное письмо отправляется только тем активным пользователям, которые соответствуют указанному письму, и только в том случае, если у них есть пригодный для использования пароль.
Попробуйте использовать следующую функцию с оболочкой управления Django:
from django.contrib.auth.models import get_user_model
def check_password_reset_cond(email):
for u in get_user_model().objects.filter(email__iexact=email):
assert u.is_active
assert u.has_usable_password()
Я бы обязательно проверил папку со спамом. Потому что иногда некоторые почтовые фильтры обрабатывают текстовые электронные письма со ссылками довольно резко.
Я рекомендую взять (некоторые IDE с) Python-отладчик и с помощью pdb (python-отладчик) пройтись по django.contrib.auth.form.PasswordResetForm.save и django.contrib.auth.views.password_reset, чтобы увидеть, что делает не работает.