首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django ModelAdmin未注册

Django ModelAdmin未注册
EN

Stack Overflow用户
提问于 2014-02-22 14:03:32
回答 1查看 1K关注 0票数 2

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

我有一个90%芹菜任务的应用程序,所以它只有两款。它们很简单。我在应用程序的ModelAdmin中定义了两个admin.py类,每个模型一个。这些也很简单。他们都是正确注册的。应用程序在INSTALLED_APPS中。

所有犹太的,没有任何定制的模板,标签或表单,只是一个普通的admin.py:

代码语言:javascript
复制
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)

很简单,它不能失败,但是它失败了:其中一个没有出现在管理员中。它根本没有注册(404在手动网址访问)。另一个确实出现了,而且工作正常。对不可见管理进行验证是因为当我向它的list_display添加一个奇怪的值时,Django确实会引发适当的异常(ImproperlyConfigured)。所以它确实读过了,只是没有注册。如果我注释掉可见的一个,应用程序就会被从管理中删除(当然,它认为没有模型管理员)。

因此,简而言之,一个ModelAdmins是不可见的,而另一个在同一个文件中并且配置几乎相同,不是这样。有什么想法吗?

编辑:我期待的一些建议的答案:是的,模型工作正常(并且经过了大量的单元测试),我已经创建/保存了实例,并且它们都在数据库中。是的,我确实重新启动了服务器。是的,这台电脑是插上的,而且它现在开着。:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-24 14:26:59

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

您需要做的是在其Meta类中指定app_label。因此,现在的模式是:

代码语言:javascript
复制
from django.db import models

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

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

顺便说一句,你可以猜到另一款车型确实包括了这个Meta,我只是之前没有注意到。LOL。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21955353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档