我有奇怪的问题。在 admin.py 我可以说:
admin.site.register(MyModel)
这显然很好。现在我希望这个模型作为用户操作的结果自动加载:
def user_action_from_admin_panel(......):
.....
admin.site.register(MyModel)
MyModel 类在管理员中显示为没有链接的纯文本。有什么想法可以解决这个问题吗?
我有奇怪的问题。在 admin.py 我可以说:
admin.site.register(MyModel)
这显然很好。现在我希望这个模型作为用户操作的结果自动加载:
def user_action_from_admin_panel(......):
.....
admin.site.register(MyModel)
MyModel 类在管理员中显示为没有链接的纯文本。有什么想法可以解决这个问题吗?
动态创建的模型不会显示在管理员中,除非它们
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
可能你需要这个
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()
原因可能是因为 Django 找不到任何与该模型的管理部分匹配的 URL。因此,管理区域中的模型行将被设置为禁用,并且没有额外的添加或编辑链接。
在某些情况下,注册模型的代码在构建管理 URL ( django.contrib.admin.site.AdminSite.get_urls() ) 后触发。解决方法是更新全局 URL 的整个管理 urlpatterns,或使用一个名为django-quickadmin的 Django 应用程序,它会自动将所有自定义模型加载到 admin 中,而无需编写任何额外的代码。
如果我无权添加/更改,我有黑色链接。
尝试重新定义您的管理类:
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)