admin.site.register(MyModel)
这显然很好。现在我希望这个模型在用户操作时自动加载:
def user_action_from_admin_panel(......):
.....
admin.site.register(MyModel)
MyModel类在管理员中显示为没有链接的纯文本。 有什么想法可以解决这个问题吗?
答案 0 :(得分: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()
答案 1 :(得分:2)
动态创建的模型不会显示在管理员中,除非他们的
app_labels
与INSTALLED_APPS中列出的包匹配这又是设计,不应被视为错误。
确保在创建模型时添加app_label
model = create_model('DynamicModel', app_label='existing_app')
还要重新加载您的网址,以便新模型获取链接
# after creating model
from django.utils.importlib import import_module
reload(import_module(settings.ROOT_URLCONF))
来源:https://code.djangoproject.com/wiki/DynamicModels#Admininterface
答案 2 :(得分: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)
答案 3 :(得分:0)
原因可能是因为Django找不到与该模型相关的任何URL匹配的admin部分。因此,管理区域中的模型行将被设置为禁用,并且不会添加其他添加或编辑链接。
在某些情况下,在构建管理URL(django.contrib.admin.site.AdminSite.get_urls())后会触发注册模型的代码。解决方法是更新全局URL的整个管理URL,或使用名为{的Django应用程序{3}},它会自动将所有自定义模型加载到管理员中,而无需添加任何其他代码。