django 1.5中的自定义用户模型

django 1.5中的自定义用户模型,第1张

概述我已经扩展了 django 1.5用户模型,如下所示,当我将任何行插入数据库时​​,我遇到了问题.我的models.py文件如下所示. class MyUserManager(BaseUserManager): def create_user(self, email, password=None): if not email: raise ValueError( 我已经扩展了 django 1.5用户模型,如下所示,当我将任何行插入数据库时​​,我遇到了问题.我的models.py文件如下所示.
class MyUserManager(BaseUserManager):   def create_user(self,email,password=None):     if not email:        raise ValueError('Users must have an email address')     user = self.model(        email=MyUserManager.normalize_email(email),)     user.set_password(password)     user.save(using=self._db)     return user   def create_superuser(self,password):     user = self.create_user(email,password=password     )     user.is_admin = True     user.save(using=self._db)     return user class MyUser(AbstractBaseUser):    email = models.EmailFIEld(      verbose_name='Email address',max_length=255,unique=True,db_index=True,)    is_active = models.BooleanFIEld(default=True)    is_admin = models.BooleanFIEld(default=False)    objects = MyUserManager()    USERname_FIELD = 'email'    def get_full_name(self):      # The user is IDentifIEd by their email address      return self.email    def __unicode__(self):      return self.email

我的admin.py如下所示.

class MyUseradmin(Useradmin):   # The forms to add and change user instances   form = UserChangeForm   add_form = UserCreationForm   # The fIElds to be used in displaying the User model.   # These overrIDe the deFinitions on the base Useradmin   # that reference specific fIElds on auth.User.   List_display = ('email','is_admin')   List_filter = ('is_admin',)   fIEldsets = (     (None,{'fIElds': ('email','password')}),('Permissions',{'fIElds': ('is_admin',)}),('important dates',{'fIElds': ('last_login',)   add_fIEldsets = (     (None,{         'classes': ('wIDe',),'fIElds': ('email','password1','password2')}     ),)   search_fIElds = ('email',)   ordering = ('email',)   filter_horizontal = ()// Now register the new Useradmin...admin.site.register(MyUser,MyUseradmin)// ... and,since we're not using Django's builtin permissions,// unregister the Group model from admin.admin.site.unregister(Group)

我从django教程(https://docs.djangoproject.com/en/dev/topics/auth/customizing/#a-full-example)中按照上面的内容

现在我遇到的问题是每当我修改管理员中的任何内容时,我收到的错误信息如下所示.

(1452,’无法添加或更新子行:外键约束失败(csiop.django_admin_log,CONSTRAINT user_ID_refs_ID_c8665aa FOREIGN KEY(user_ID)REFERENCES auth_user(ID))’)

因此,看起来django_admin_log表总是需要对auth_user模型的外键引用.但是因为我创建了一个客户用户模型,当我创建一个超级用户时,用户详细信息只存储在客户MyUser表中,并且在auth_user模型中没有创建任何条目,这似乎导致了该问题.

我该如何解决这个问题?请建议.

谢谢
斯里卡特

解决方法 这看起来非常像(Postgresql)数据库错误 – 而不是Django错误. “auth_user”(仍然)在数据库结构的ForeignKey约束中引用.您的自定义模型(称为“MyUser”)不应存在此类问题.在这种情况下,引用应该类似于“accounts_myuser”或“myappname_myuser”.

我想,你已经更新了现有的代码,包括一个旧的数据库.如果您不需要旧的管理日志,只需删除/删除名为“django_admin_log”的表,然后运行“python manage.py syncdb”(或1.7版本的“python manage.py migrate”)让Django重新创建这张桌子从头开始.

但要小心:如果你有其他表引用“旧的”Django用户模型,你将在其他位置再次遇到同样的问题.

总结

以上是内存溢出为你收集整理的django 1.5中的自定义用户模型全部内容,希望文章能够帮你解决django 1.5中的自定义用户模型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1207096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存