Django ModelAdmin未注册

2024-09-29 21:44:12 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我想告诉你,我确实检查了其他相关的问题,但他们的解决方案非常简单(不正确的注册、设置等)。这个问题很奇怪,这是我用Django开发3年多以来从未遇到过的问题。所以就来了:

我有一个应用程序是90%的芹菜任务,所以它只有两个模型。它们很简单。我在管理员py每个型号一个。这些都很简单。它们都已正确注册。应用程序位于已安装的应用程序中。在

所有的洁食,没有任何定制的模板,标签或表格,只是一个简单的管理员py公司名称:

from myapp.models import (Something, OtherModel)

class SomethingAdmin(admin.ModelAdmin):
    # admin config ...

class OtherModelAdmin(admin.ModelAdmin):
    pass # Trying anything at this point...

admin.site.register(Something, SomethingAdmin)
admin.site.register(OtherModel, OtherModelAdmin)

如此简单,它不能失败,但它确实存在:其中一个不会出现在管理员中。它只是没有注册(手动url访问时为404)。另一个确实出现了,而且工作正常。 对该不可见的admin进行验证是有效的,因为当我向它的list_显示添加一个奇怪的值时,Django确实会引发正确的异常(未正确配置)。所以它确实读了它,只是没有注册它。如果我注释了可见的输出,则该应用程序只需从管理员中删除(当然,它认为没有模型管理员)。在

所以,简言之,其中一个modeldadmins是不可见的,而另一个modeldAdmin>在同一个文件中,配置几乎相同,不是吗?在

编辑:对我期望的一些建议的回答:是的,模型工作正常(并且经过大量的单元测试),我已经创建/保存了实例,它们都在数据库中。是的,我重启了服务器。是的,计算机已接通电源,当前处于开机状态。:)


Tags: djangopy模型register应用程序admin管理员site
1条回答
网友
1楼 · 发布于 2024-09-29 21:44:12

事实证明,问题出在结构上:模型是一个包,而不是更常见的模块。似乎即使您使模型在包级别可用(在init.py中导入),Django仍然不知道它应该包含在哪个应用程序中。在

您需要做的是在其元类中指定app_label。因此,模型现在变成:

from django.db import models

class OtherModel(models.Model):
    class Meta:
        app_label = 'someapp'
        # other meta attrs
    # Model attrs ...

奇怪的是,当模型在通常的models.SomeModel命名空间中可用时,需要指定它,但至少解决方案足够简单。在

顺便说一句,你可以猜到另一个模型确实包含了这个Meta attr,我只是之前没有注意到。哈哈

相关问题 更多 >

    热门问题