0

我刚刚迁移到 Django 1.5。但是我遇到了一些困难AUTH_USER_MODEL。看下面的例子,我只是无法更新数据库中的值。我做错了什么?

测试 1

user = get_user_model().objects.get(id=3)
user.email
u'zzzzz@gmail.com'
user.is_active
False

user.is_active = True
user.save()

user = get_user_model().objects.get(id=3)
user.is_active
False

测试 2

user.email
u'zzzzz@gmail.com'
user.email='blah@blah.com'
user.save()

user = get_user_model().objects.get(id=3)
user.email
u'zzzzz@gmail.com'

Teste 3 MyUser 模型也是如此

from myuser.models import MyUser
a = MyUser.objects.get(id=3)
a.is_active
False
a.is_active = True
a.save()
a = MyUser.objects.get(id=3)
a.is_active
False
4

1 回答 1

1

@Catherine 和 @Sid 是正确的!多谢你们!

在我的保存方法中,我忘记了缩进 super()。

它是:

def save(self, *args, **kwargs):

    if not self.hash:
        now = time.localtime(time.time())
        time_formatted=time.strftime("%Y-%m-%d %H:%M:%S", now)
        hash="%s%s" % (time_formatted, self.email)
        self.hash=hashlib.sha1(hash).hexdigest()
        super(MyUser, self).save(*args, **kwargs)

当正确的是:

def save(self, *args, **kwargs):
    if not self.hash:
        now = time.localtime(time.time())
        time_formatted=time.strftime("%Y-%m-%d %H:%M:%S", now)
        hash="%s%s" % (time_formatted, self.email)
        self.hash=hashlib.sha1(hash).hexdigest()
    super(MyUser, self).save(*args, **kwargs)
于 2013-03-05T11:27:03.163 回答