# coding: utf8 | |
from django.db import models | |
from django.contrib.auth.models import BaseUserManager, AbstractBaseUser | |
# Create your models here. | |
class PassportManager(BaseUserManager): | |
def create_user(self, email, alias, password=None): | |
# create_user()参数必须是USERNAME_FIELD 和 所有的REQUIRED_FIELD | |
if not email: | |
raise ValueError('用户必须输入Email地址') | |
user = self.model( | |
email = PassportManager.normalize_email(email), | |
alias = alias, | |
# is_staff = False, | |
# is_active = True, | |
# is_superuser = False | |
) | |
user.set_password(password) | |
user.save(using = self._db) | |
return user | |
def create_superuser(self, email, alias, password): | |
# 创建超级用户,一般来说可以直接调用create_user方法,然后设置管理员相关属性, | |
user = self.create_user( | |
email = email, | |
alias = alias, | |
password = password | |
) | |
user.is_admin = True | |
# is_admin = True 等同于以下: | |
# user.is_staff = True | |
# user.is_active = True | |
# user.is_superuser = True | |
user.save(using = self._db) | |
return user | |
class Passport(AbstractBaseUser): | |
email = models.EmailField(max_length=254, unique=True, db_index=True) | |
alias = models.CharField(max_length=60) | |
is_active = models.BooleanField('active', default=True) | |
is_admin = models.BooleanField('staff status', default=False, help_text='flag for log into admin site.') | |
avatar = models.ImageField(upload_to='avatar', max_length=255) | |
bio = models.CharField(max_length=255) | |
GENRE_CHOICES = ( | |
(1, '摄影师'), | |
(2, '插画师'), | |
(3, '原画师'), | |
(4, '平面设计师'), | |
(5, '品牌顾问'), | |
(6, '其他'), | |
) | |
genre = models.SmallIntegerField(choices=GENRE_CHOICES) | |
site_dribbble = models.URLField(blank=True, verbose_name=u'Dribbble') | |
site_deviantart = models.URLField(blank=True, verbose_name=u'DeviantART') | |
site_benhance = models.URLField(blank=True, verbose_name=u'Benhance') | |
site_tumblr = models.URLField(blank=True, verbose_name=u'Tumblr') | |
site_zcool = models.URLField(blank=True, verbose_name=u'站酷') | |
site_blog = models.URLField(blank=True, verbose_name=u'博客') | |
site_sina = models.URLField(blank=True, verbose_name=u'新浪微博') | |
# 用于登录的字段 | |
USERNAME_FIELD = 'email' | |
# REQUIRED_FIELDS must contain all required fields on your User model, | |
# but should not contain the USERNAME_FIELD or password as these fields | |
# will always be prompted for. | |
REQUIRED_FIELD = ['alias'] | |
objects = PassportManager() | |
def get_full_name(self): | |
return self.alias | |
def get_short_name(self): | |
return self.alias | |
def __unicode__(self): | |
return self.alias | |
@property | |
def is_staff(self): | |
# Is the user a member of staff? | |
# Simplest possible answer: All admins are staff | |
return self.is_admin | |
![]() |
1
wtracyliu 2014-01-31 23:38:11 +08:00
PassportManager里面那个create_superuser是不是应该用下super ??
|
![]() |
2
crazycookie 2014-01-31 23:43:07 +08:00
|
![]() |
3
alexapollo 2014-01-31 23:44:06 +08:00
DJANGO 1.5:def create_superuser(self, username, email, password, **extra_fields):
你的:def create_superuser(self, email, alias, password): 按着上面那种试试? |
![]() |
4
daodao OP @crazycookie 数据库里面没有内容,但是已经创建了zhuo这个数据库
|
![]() |
5
daodao OP 搞不定啊...一晚上了...
|
6
ritksm 2014-01-31 23:55:45 +08:00
哈哈哈。。。LS的同学们能靠谱点么。。。根据源代码。。。于是LZ少了个'S'
![]() |
![]() |
8
RIcter 2014-02-01 09:32:22 +08:00
最近也在写一个django的论坛,各种重写..各种翻django源码....
虽然django方便不少,但是有时候还是局限的要死(●´ω`●) |