我在try 将events.models模块中的cms.models.fields中的PlaceholderField添加到EventVenue型号时遇到了一个问题.

from cms.models.fields import PlaceholderField
class EventVenue(models.Model):
    name = models.CharField(_('name'), max_length=255)
    slider = PlaceholderField('room_slider')

设置:

INSTALLED_APPS = [
    'modeltranslation',
    'djangocms_admin_style',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'django.forms',
    
    'haystack',
    'accounts',
    'cms',
    'menus',
    'treebeard',
    'sekizai',
    'filer',
    'easy_thumbnails',
    'mptt',
    'simple_history',
    'crispy_forms',
    'crispy_bootstrap5',

    'djangocms_text_ckeditor',
    'djangocms_link',
    'djangocms_file',
    'djangocms_picture',
    'djangocms_video',
    'djangocms_googlemap',
    'djangocms_snippet',
    'djangocms_style',
    'djangocms_forms',
    'django_flatpickr',
    'phonenumber_field',

    'bgv_cms',
    'ddz_cms',
    'events',
    'mail_list',
]
AUTH_USER_MODEL = 'accounts.CustomUser'

自定义用户类:

class CustomUser(AbstractUser):
    organization = models.ForeignKey(Organization, on_delete=models.SET_NULL,blank=True, null=True, related_name='employee')
    mailing_list = models.ManyToManyField(to='MailList', related_name='mail_list', blank=True, verbose_name=_('Mailing lists'))
    room = models.CharField(_('Room Mailing Lists'), max_length=100, choices=FLOOR, blank=True, null=True)
    email = models.EmailField(_('email address'), unique=True)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ('username',)

    objects = CustomUserManager()

    def __str__(self):
        return self.get_full_name() or self.username

以下是回溯的相关部分:

from events.models import EventVenue
  File "C:\Users\SAIF\Desktop\projects\bgv\bgv\events\models.py", line 17, in <module>
    from cms.models.fields import PlaceholderField
  File "C:\Users\SAIF\Anaconda3\envs\bgv\lib\site-packages\cms\models\__init__.py", line 3, in <module>
    from .permissionmodels import *  # nopyflakes
  File "C:\Users\SAIF\Anaconda3\envs\bgv\lib\site-packages\cms\models\permissionmodels.py", line 19, in <module>
    User = apps.get_registered_model(user_app_name, user_model_name)
  File "C:\Users\SAIF\Anaconda3\envs\bgv\lib\site-packages\django\apps\registry.py", line 273, in get_registered_model
    raise LookupError(
LookupError: Model 'accounts.CustomUser' not registered.

我try 更改安装应用程序中的应用程序顺序,并从自定义用户中的PermissionsMixin继承,但不起作用

Account应用程序中的Organization类:

class Organization(models.Model):
    name = models.CharField(max_length=255)
    contact_person = models.ForeignKey(settings.AUTH_USER_MODEL, 
                                       on_delete=models.CASCADE,
                                       blank=True, null=True, 
                                       help_text=_('if you changed the contact person to another user, you lose access to this organization info.'),
                                       related_name='owner')
responsible_for_room = models.ForeignKey(EventVenue, on_delete=models.SET_NULL,blank=True, null=True, related_name='responsible_for_room')
    def __str__(self):
        return self.name

推荐答案

在我的当前项目中添加AUTH_USER_MODEL进行了几次测试后,我的结论如下:

  • 在Django-cms上使用AUTH_USER_MODEL需要注意细节
  • 改变INSTALLED_APPS个订单可能会有帮助,但对我来说(对运营部门也不是)
  • 对我有帮助的是,确保我的包含AUTH_USER_MODEL的应用程序导入与CMS无关的东西(即没有页面字段、没有模型、没有助手或任何东西).我不能全部列出,但你会得到的).因为这将触发要导入用户模型的PermissionsModel的加载.此外,在包含您的用户的应用程序之前的任何应用程序(INSTALLED_APPS中)都不应该导入任何cms.

因此,对于这个特定的 case /问题,这将意味着判断accounts个应用程序是否有任何CMS导入.此外,对于任何其他可能触发CMS导入的导入,例如Organization-这可以删除,外键标记为models.ForeignKey("organization_app.Organization",....)-因为我不知道Organization住在哪里.

这还没有得到充分的研究,但无论如何可能会有所帮助.有趣的事实:如果您指定AUTH_USER_MODEL = "auth.User",一切运行正常.

Python-3.x相关问答推荐

逐行比较2个Pandas数据帧,并对每一行执行计算

匹配语句NaN

requests.exceptions.InvalidSchema:未找到连接适配器.我试图遍历一个列表

Django在POST到外部URL时如何进行CSRF保护? 更新

数据框中从每个组/ID的底部删除行

如何将日期时间索引写入日期类型的表?

我想使用命令提示符安装 cv2

try 使用 GEKKO 求解非线性方程组.系统有多种解决方案,但 GEKKO 给出了错误的解决方案.我该如何解决?

如何通过从特定列创建分组多标题来reshape 数据框?

位对的距离

为什么 Multiprocessing 的 Lock 不会阻止其他进程使用对象?

在 Django 中执行 JSONRenderer.render(serialized_student_data.data) 时遇到问题

python tkInter 浏览文件夹按钮

无法在 Windows Python 3.5 上安装 Levenshtein 距离包

简单的 get/post 请求在 python 3 中被阻止,但在 python 2 中没有

在不关心项目的情况下运行生成器功能的更简单方法

如何将numpy数组图像转换为字节?

是否在未完成初始化的对象上调用了 del?

TypeError:只有整数标量数组可以转换为标量索引

matplotlib - 模块sip没有属性setapi