Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django动态模型,无法在管理中访问_Django_Django Models_Django Admin - Fatal编程技术网

Django动态模型,无法在管理中访问

Django动态模型,无法在管理中访问,django,django-models,django-admin,Django,Django Models,Django Admin,我使用的是Django 1.11,我试图通过引用这个链接创建Django动态模型,通过执行它运行的每一步,没有任何问题,但是当我在Django管理面板中看到注册的模型时,该模型在相应的应用程序下可见,但无法访问,我不知道我错过了什么 def create_model(name, fields=None, app_label='', module='', options=None, admin_opts=None): """ Create specified model "

我使用的是Django 1.11,我试图通过引用这个链接创建Django动态模型,通过执行它运行的每一步,没有任何问题,但是当我在Django管理面板中看到注册的模型时,该模型在相应的应用程序下可见,但无法访问,我不知道我错过了什么

def create_model(name, fields=None, app_label='', module='', options=None, admin_opts=None):
    """
    Create specified model
    """
    class Meta:
        # Using type('Meta', ...) gives a dictproxy error during model creation
        pass

    if app_label:
        # app_label must be set using the Meta inner class
        setattr(Meta, 'app_label', app_label)

    # Update Meta with any options that were provided
    if options is not None:
        for key, value in options.iteritems():
            setattr(Meta, key, value)

    # Set up a dictionary to simulate declarations within a class
    attrs = {'__module__': module, 'Meta': Meta}

    # Add in any fields that were provided
    if fields:
        attrs.update(fields)

    # Create the class, which automatically triggers ModelBase processing
    model = type(name, (models.Model,), attrs)

    # Create an Admin class if admin options were provided
    if admin_opts is not None:
        class Admin(admin.ModelAdmin):
            pass
        for key, value in admin_opts:
            setattr(Admin, key, value)
        admin.site.register(model, Admin)

    return model
请参考此图以供参考:

这里的模型测试11是通过动态模型方法创建的,我无法访问该模型,添加/更改按钮也不在那里,当我关闭服务器并重新启动时,动态创建的模型被隐藏


如何访问此模型?我是否错过了这里的任何步骤或有什么问题?

我也遇到了同样的问题,但几行代码解决了这个问题。您需要注册动态模型,然后重新加载并清除缓存。它看起来像这样:

from django.contrib import admin
from django.core.urlresolvers import clear_url_caches
from django.utils.module_loading import import_module

admin.site.register(model, admin_options)
reload(import_module(settings.ROOT_URLCONF))
clear_url_caches()

正如我所知,当django应用程序启动时,它会缓存所有ModelAdmin操作。当新模型创建时,您需要跟踪django应用程序初始化逻辑并缓存或重新启动django应用程序。感谢您的回复,让我检查一下并将其还原。