我已经扩展了 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中的自定义用户模型的更多相关文章

  1. ios – 在Restkit 0.2中为给定的类添加两个请求描述符

    我需要从User类中提供两种不同类型的POST.我试图制作两个请求描述符并将其添加到我的对象管理器,但是我收到错误“Cannotaddarequestdescriptorforthesameobjectclassasanexistingrequestdescriptor.”我的代码有没有人知道如何解决这个问题,而不需要为这些请求创建一个单独的类?任何帮助是赞赏.谢谢.解决方法您可以使用动态映射来切

  2. [快速学会Swift第三方库] SQLite.swift篇

    [快速学会Swift第三方库]sqlite.swift篇sqlite.swift是一个使用纯Swift语言封装sqlite3的操作框架。

  3. CSSwiftExtension - 贡献一个非常好用的Swift extension集合

    CSSwiftExtension是我个人开源的一个非常有用的Swiftextension集合。

  4. Swift类型不符合协议NilLiteralConvertible

    我以为写这样的东西:这不会抛出这个错误。听起来像斯威夫特让我只写第二种方式。如果你的函数可以返回nil,那么它应该被声明为…然后呼叫者知道它可以是零。(你的第二个例子是工作,但会崩溃,因为退出将隐含地尝试解开nil。

  5. swift3 – Alamofire 4.0,Swift 3 Post params没有通过

    当我升级到最新的一切时,以下停止发布参数,我不知道为什么……

  6. 无法使用swift 3和ios 10从facebook检索电子邮件

    您好我正试图从Facebook检索我的电子邮件,因为我正在使用swift播放facebookiossdk.IOS平台是10,swift3和Xcode8.我在线跟踪教程,但无法检索电子邮件.下面是我的代码:在我的appdelegate.swift文件中:我能够登录并注销但无法检索电子邮件.更新实际上,当我实际传递打印时,我可以在控制台上看到它作为可选语句.我在没有可选参数的情况下显示它时遇到了麻烦我用这种方式解决了这个问题:

  7. android – 如何在ViewPager中使用cursorLoader?

    解决方法我无法评论,所以我正在写一个答案..您有一个实现LoaderCallbacks的活动.加载数据时,您的活动会收到onLoadFinished回调.在此方法中,您有一个应该在ViewPager中显示的Cursor.要显示Cursor中的数据,请在适配器上调用swapCursor方法.因此,每次加载数据时都不要创建适配器.创建一次,然后只需调用swapCursor即可.此外,每次都找不到ViewPager–findViewById是一个繁重的操作,它应该在创建视图层次结构后执行.所以,你的onLoad

  8. 难以在Android和iPhone上部署Django应用程序..计划切换到PHP而不是Django

    .我是否需要学习PHP,C,Java或其他任何东西,或者只要知道django和python就可以做到这一点?

  9. 使用LoginManager登录Android Facebook SDK 4.0

    我正在尝试将旧应用程序的登录代码从SDK3.0迁移到SDK4.0.我已经使用LoginManager实现了Login,因为我有自定义登录按钮.问题是我没有得到FacebookAPI的回复.没有成功,没有错误,没有任何异常抛出.代码如下:使用调试器,我能够看到这一行:mLoginMgr.logInWithReadPermissions(mActivity,mPermissions);执行,但没有触发

  10. android – UnitTest JSONObject显示为null

    )将其添加到build.gradle文件中,如下所示这将取代存根的Android库与在桌面上工作的库.

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部