问题描述
我已经在Django中创建了两个模型,通过使用OnetoOne关系扩展了默认的用户和组模型。 GroupExtended和UserExtended通过ManyToMany关系关联:
from django.contrib.auth.models import Group,User
class GroupExtended(models.Model):
group = models.OnetoOneField(
to = Group,on_delete = models.CASCADE
)
[other fields...]
class UserExtended(models.Model):
user = models.OnetoOneField(
User,on_delete = models.CASCADE
)
group = models.ManyToManyField(
GroupExtended,)
[other fields...]
我想获得的是,当我将扩展组分配给扩展用户时,关联的用户也会尽可能地更改组。也许这张图表有助于解释自己:
换句话说:是否可以将两个多对多关系关联起来,使得当我关联两个字段时,对应的一对一关联字段也被关联了?
更新:当前解决方案
到目前为止,这是我在您的帮助下找到的最佳解决方案。我用Abstract User覆盖了用户模型,并扩展了Auth / Group。当我修改或创建新的扩展组时,身份验证组也会被修改或创建。
/models.py:
from django.contrib.auth.models import AbstractUser
from django.contrib.auth.models import Group
#Group
class GroupExtended(Group):
[new fields...]
#Users
class User(AbstractUser):
[new fields...]
我还需要覆盖管理站点: /admin.py
from app.models import User
from django.contrib.auth.admin import UserAdmin
class UserAdminext(UserAdmin):
print(UserAdmin.fieldsets) #To get the fieldsets
#Now I override it
fieldsets = (
(None,{'fields': ('username','password','new_fields')}),('Personal info',{'fields': ('first_name','last_name','email')}),('Permissions',{'fields': ('is_active','is_staff','is_superuser','groups','user_permissions')}),('Important dates',{'fields': ('last_login','date_joined')}))
admin.site.register(User,UserAdminext)
似乎可行...
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)