首先,我想告诉你,我确实检查了其他相关的问题,但他们的解决方案非常简单(不正确的注册、设置等)。这个问题很奇怪,这是我用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>在同一个文件中,配置几乎相同,不是吗?在
编辑:对我期望的一些建议的回答:是的,模型工作正常(并且经过大量的单元测试),我已经创建/保存了实例,它们都在数据库中。是的,我重启了服务器。是的,计算机已接通电源,当前处于开机状态。:)
事实证明,问题出在结构上:模型是一个包,而不是更常见的模块。似乎即使您使模型在包级别可用(在init.py中导入),Django仍然不知道它应该包含在哪个应用程序中。在
您需要做的是在其元类中指定
app_label
。因此,模型现在变成:奇怪的是,当模型在通常的
models.SomeModel
命名空间中可用时,需要指定它,但至少解决方案足够简单。在顺便说一句,你可以猜到另一个模型确实包含了这个Meta attr,我只是之前没有注意到。哈哈
相关问题 更多 >
编程相关推荐