次のコードは正常に動作しています。
run.py
import datetime
from flask import Flask
from peewee import TextField, DateTimeField
from flask_peewee.db import Database
from flask_peewee.auth import Auth
from flask_peewee.admin import Admin, ModelAdmin
# configure database
DATABASE = {
'name': 'surveyApp.db',
'engine': 'peewee.SqliteDatabase',
}
DEBUG = True
CSRF_ENABLED = True
SECRET_KEY = 'you-will-never-guess'
app = Flask(__name__)
app.config.from_object(__name__)
db = Database(app)
# from model.user_infos import Note, NoteAdmin
class Note(db.Model):
message = TextField()
created = DateTimeField(default=datetime.datetime.now)
class NoteAdmin(ModelAdmin):
columns = ('message', 'created',)
# create an Auth object for use with our flask app and database wrapper
auth = Auth(app, db)
admin = Admin(app, auth)
admin.register(Note, NoteAdmin)
admin.setup()
if __name__ == '__main__':
app.run()
モデルを分離して管理者にも登録しようとしています。しかし、それはエラーを生成しています。すべてのモデルは「モデル」フォルダー内にあります。
エラーを生成するコード:
run.py (修正)
import datetime
from flask import Flask
from peewee import TextField, DateTimeField
from flask_peewee.db import Database
from flask_peewee.auth import Auth
from flask_peewee.admin import Admin, ModelAdmin
# configure database
DATABASE = {
'name': 'surveyApp.db',
'engine': 'peewee.SqliteDatabase',
}
DEBUG = True
CSRF_ENABLED = True
SECRET_KEY = 'you-will-never-guess'
app = Flask(__name__)
app.config.from_object(__name__)
db = Database(app)
auth = Auth(app, db)
admin = Admin(app, auth)
from model.user_infos import Note, NoteAdmin # GENERATES IMPORT ERROR
admin.register(Note, NoteAdmin)
admin.setup()
if __name__ == '__main__':
app.run()
モデル/user_infos.py
from run import db, admin
import datetime
from peewee import TextField, DateTimeField
from flask_peewee.admin import ModelAdmin
class Note(db.Model):
message = TextField()
created = DateTimeField(default=datetime.datetime.now)
class NoteAdmin(ModelAdmin):
columns = ('message', 'created',)
モデルフォルダーには __init__.py も含まれています