2

我有奇怪的问题。在 admin.py 我可以说:

admin.site.register(MyModel)

这显然很好。现在我希望这个模型作为用户操作的结果自动加载:

def user_action_from_admin_panel(......):
    .....
    admin.site.register(MyModel)

MyModel 类在管理员中显示为没有链接的纯文本。有什么想法可以解决这个问题吗?

4

4 回答 4

2

动态创建的模型不会显示在管理员中,除非它们app_labels与 INSTALLED_APPS 中列出的包匹配

这又是设计使然,不应被视为错误。

确保app_label在创建模型时添加

model = create_model('DynamicModel', app_label='existing_app')

还要重新加载您的 url conf,以便新模型获取链接

# after creating model
from django.utils.importlib import import_module
reload(import_module(settings.ROOT_URLCONF))

来源:https ://code.djangoproject.com/wiki/DynamicModels#Admininterface

于 2015-04-14T12:40:36.810 回答
2

可能你需要这个

from django.core.urlresolvers import clear_url_caches
from django.utils.importlib import import_module


def user_action_from_admin_panel(......):
    .....
    admin.site.register(MyModel)
    reload(import_module(settings.ROOT_URLCONF))
    clear_url_caches()
于 2013-03-17T22:58:59.900 回答
0

原因可能是因为 Django 找不到任何与该模型的管理部分匹配的 URL。因此,管理区域中的模型行将被设置为禁用,并且没有额外的添加或编辑链接。

在某些情况下,注册模型的代码在构建管理 URL ( django.contrib.admin.site.AdminSite.get_urls() ) 后触发。解决方法是更新全局 URL 的整个管理 urlpatterns,或使用一个名为django-quickadmin的 Django 应用程序,它会自动将所有自定义模型加载到 admin 中,而无需编写任何额外的代码。

于 2015-04-10T09:44:41.957 回答
0

如果我无权添加/更改,我有黑色链接。

尝试重新定义您的管理类:

class MyModelAdmin(admin.ModelAdmin):

    def has_add_permission(self, request):
        return True

    def has_change_permission(self, request):
        return True
...

admin.site.register(MyModel, MyModelAdmin)
于 2014-02-13T19:16:38.863 回答