私はDjango 1.11を使用していますが、このリンクhttps://code.djangoproject.com/wiki/DynamicModelsを参照してDjango動的モデルを作成しようとしましたが、問題なく実行されるすべてのステップを実行しますが、モデルをDjangoの管理パネルに表示すると、Modelはそれに対応するアプリケーションの下に表示されますが、アクセスできないため、私はそこで逃したものを知りません。Django Dynamic Model、管理者でアクセスできない
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は、動的モデルメソッドによって作成され、私はそのモデルにアクセスすることはできませんよ、追加/変更ボタンもありません。サーバーを強制終了して再起動すると、その動的に作成されたモデルは非表示になります。
このモデルにアクセスするにはどうすればよいですか?私はここに何か踏み間違えたのか、それとも間違っているのか?
私が知っているように、djangoアプリが起動すると、すべてのModelAdminアクションがキャッシュされます。新しいモデルが作成されたら、django appのinitロジックとキャッシングを追跡したり、Django appを再起動する必要があります。 – vadimchin