Python 扩展Django-Auth用户模型

Python 扩展Django-Auth用户模型,python,django,Python,Django,管理员 class NetUserInline(admin.StackedInline): model = NetUser class UserProfileAdmin(UserAdmin): inlines = [NetUserInline, ] admin.site.register(User, UserProfileAdmin) models.py class NetUser(AbstractUser): Net_30 = models.BooleanFiel

管理员

class NetUserInline(admin.StackedInline):
    model = NetUser

class UserProfileAdmin(UserAdmin):
    inlines = [NetUserInline, ]

admin.site.register(User, UserProfileAdmin)
models.py

class NetUser(AbstractUser):
    Net_30 = models.BooleanField(default=False)

site.register(NetUser)
我犯了这样的错误

django.core.management.base.CommandError: One or more models did not validate:
accounts.netuser: Accessor for m2m field 'groups' clashes with related m2m field 'Group.user_set'. Add a related_name argument to the definition for 'groups'.
accounts.netuser: Accessor for m2m field 'user_permissions' clashes with related m2m field 'Permission.user_set'. Add a related_name argument to the definition for 'user_permissions'.
auth.user: Accessor for m2m field 'groups' clashes with related m2m field 'Group.user_set'. Add a related_name argument to the definition for 'groups'.
auth.user: Accessor for m2m field 'user_permissions' clashes with related m2m field 'Permission.user_set'. Add a related_name argument to the definition for 'user_permissions'.

您可能忘记在settings.py中设置AUTH\u USER\u模型

AUTH_USER_MODEL = 'myapp.NetUser'
文件:


PS:但是使用某种imho通常不那么痛苦)

您可能忘记了在settings.py中设置AUTH\u USER\u模型

AUTH_USER_MODEL = 'myapp.NetUser'
文件:


PS:但是使用某种imho通常不那么痛苦)

Django用户模型自动成为任何Django项目的一部分。也就是说,用户模型将在运行
syncdb
的同时创建属于它的所有数据库表。您已经为NetUser类对AbstractUser进行了子类化,这意味着AbstractUser的所有字段都是NetUser的一部分。所以,现在您的数据库中有这样的表

  • 使用者
    • 用户名
    • 密码
    • 电子邮件
  • 网络用户
    • 用户名
    • 密码
    • 电子邮件
    • 净收入30
作为Django用户管理的一部分,将创建数据库表,用于管理用户在应用程序中拥有的组/权限。目前,该系统似乎正在尝试连接到标准用户模型和您的NetUser模型。我假设这是因为通过对AbstractUser Django子类化,它试图创建与该用户模型的所有关系。同时,如果您没有指定您正在使用自定义用户模型,那么Django将尝试对标准用户模型执行相同的操作

通过将
AUTH\u user\u model='Accounts.NetUser'
添加到settings.py文件中,您必须指定用户模型使用的内容(如果不是默认值)。这会告诉Django项目您使用的是自定义用户模型,而不是连接到标准用户模型。现在这两种情况都在发生


此外,您应该将
admin.site.register(User,UserProfileAdmin)
更改为
admin.site.register(NetUser,UserProfileAdmin)
,以便您的管理后端查看的是您的自定义用户模型,而不是标准的Django用户模型。

Django用户模型自动成为任何Django项目的一部分。也就是说,用户模型将在运行
syncdb
的同时创建属于它的所有数据库表。您已经为NetUser类对AbstractUser进行了子类化,这意味着AbstractUser的所有字段都是NetUser的一部分。所以,现在您的数据库中有这样的表

  • 使用者
    • 用户名
    • 密码
    • 电子邮件
  • 网络用户
    • 用户名
    • 密码
    • 电子邮件
    • 净收入30
作为Django用户管理的一部分,将创建数据库表,用于管理用户在应用程序中拥有的组/权限。目前,该系统似乎正在尝试连接到标准用户模型和您的NetUser模型。我假设这是因为通过对AbstractUser Django子类化,它试图创建与该用户模型的所有关系。同时,如果您没有指定您正在使用自定义用户模型,那么Django将尝试对标准用户模型执行相同的操作

通过将
AUTH\u user\u model='Accounts.NetUser'
添加到settings.py文件中,您必须指定用户模型使用的内容(如果不是默认值)。这会告诉Django项目您使用的是自定义用户模型,而不是连接到标准用户模型。现在这两种情况都在发生


此外,您应该将
admin.site.register(User,UserProfileAdmin)
更改为
admin.site.register(NetUser,UserProfileAdmin)
这样,您的管理员后端会查看您的自定义用户模型,而不是标准的Django用户模型。

我尝试了上述解释,但没有收到类似这样的错误。shop.cart:“User”与model Accounts.NetUser有关系,后者要么尚未安装,要么是抽象的。shop.order:“user”与尚未安装或是抽象的model Accounts.NetUser有关系。accounts.address:“user_shipping”与模型accounts.NetUser有关系,该模型尚未安装或是抽象的。accounts.address:“user\u billing”与尚未安装或是抽象的model accounts.NetUser有关系。reversion.revision:“user”与模型Accounts.NetUser有关系,该模型尚未安装我尝试了上述解释,但没有收到类似的错误。shop.cart:“user”与模型Accounts.NetUser有关系,该模型Accounts.NetUser未安装或是抽象的。shop.order:“user”与尚未安装或是抽象的model Accounts.NetUser有关系。accounts.address:“user_shipping”与模型accounts.NetUser有关系,该模型尚未安装或是抽象的。accounts.address:“user\u billing”与尚未安装或是抽象的model accounts.NetUser有关系。reversion.revision:“user”与尚未安装的model Accounts.NetUser有关系