django>=1.5的可选用户模型,带有电子邮件字段和其他功能
django-altuser的Python项目详细描述
安装
将altuser放入已安装的应用程序中
INSTALLED_APPS += ( 'altuser', )
并从available altuser/models.py中配置您首选的用户模型, 例如
AUTH_USER_MODEL = 'altuser.MailSocialUser'
可用型号
- MailUser
- MailSocialUser
- MailConfirmedUser
- MailConfirmedSocialUser
- MailSocialConfirmfollowUser
- MailConfirmedSocialConfirmfollowUser
用法
一个管
如果将此用户模型与另一个配置文件模型一起使用,则 应该将此字段放在您的配置文件模型上
user = models.OneToOneField(settings.AUTH_USER_MODEL, related_name='profile')
如果有多个配置文件类型,则应使用user.get_profile()来获取 与此用户关联的正确配置文件,但您还必须设置
ALTUSER_PROFILES_BREL = ['profile']
到您拥有的各种配置文件的反向关系名称(relate_name)列表。 例如,如果有两个模型(客户机和管理器)与一个OneToOneField关联到 我们的用户模型,它们有不同的相关名称,一个客户端配置文件和另一个客户端配置文件 manager_profile,则altuser_profile必须是[“client_profile”,“manager_profile”]
一般关系
实际上,您还可以使用内部配置文件类型泛型关系 在提供的AbstractMailuser上,这将允许您强制 每个用户的配置文件类型,是否使用取决于您。
# used in this way: self.user.get().usermodelfield user = generic.GenericRelation(settings.AUTH_USER_MODEL, content_type_field='profile_type', object_id_field='profile_id')
这样的通用关系允许您拥有用户和配置文件 在同一内联中,例如在管理中:
from django.contrib import admin from .models import MannequineProfile from django.contrib.auth import get_user_model from django.contrib.contenttypes import generic class UserInline(generic.GenericTabularInline): model=get_user_model() extra=1 max_num=1 ct_field = 'profile_type' ct_fk_field = 'profile_id' exclude = ('last_login', 'is_staff', 'is_superuser', 'groups', 'user_permissions' ,'likes', 'follows') class ProfileAdmin(admin.ModelAdmin): inlines = [ UserInline, ] admin.site.register(Profile, ProfileAdmin)
还要注意,如果删除具有GenericRelation的对象,则任何具有指向该对象的GenericForeignKey的对象也将被删除。 在上面的示例中,这意味着如果删除了配置文件对象,则指向该对象的任何用户对象都将同时被删除。
确认型号
对于使用邮件确认模型,您必须使用[django-mail_confirmation](http://v.licheni.net/drc/django-mail_confirmation.git)
若要筛选已确认社交关系的用户,请执行以下操作:
get_user_model().objects.filter(id=user.id, follows=otheruser, relations__confirmed__confirmed=True)