当我使用AUTH_USER_MODEL参数时,为什么不能保存对象?

时间:2013-03-05 03:03:40

标签: django django-views django-1.5

我刚迁移到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

1 个答案:

答案 0 :(得分: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)