이처럼 보이도록 모델을 수정할 수 있습니다
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
url_pic = Column(String(50), nullable=False)
pic = Column(LargeBinary, nullable=False)
...
지금 당신이
flask.ext.admin.contrib.sqla
에서
ModelView
를 서브 클래스해야한다. 그런 다음 해당 하위 클래스의 인스턴스를 Admin 인스턴스에 추가합니다. 다음 소스 코드는 그 요점을 파악하는 데 도움이 될 수 있습니다.
다음
from flask.ext.admin.contrib.sqla import ModelView
from flask.ext.admin.form.upload import FileUploadField
from wtforms.validators import ValidationError
from flask.ext.admin import Admin
from flask.ext.sqlalchemy import SQLAlchemy
from flask import Flask
import imghdr
app = Flask(__name__)
db = SQLAlchemy(app)
class UserAdminView(ModelView):
def picture_validation(form, field):
if field.data:
filename = field.data.filename
if filename[-4:] != '.jpg':
raise ValidationError('file must be .jpg')
if imghdr.what(field.data) != 'jpeg':
raise ValidationError('file must be a valid jpeg image.')
field.data = field.data.stream.read()
return True
form_columns = ['id','url_pic', 'pic']
column_labels = dict(id='ID', url_pic="Picture's URL", pic='Picture')
def pic_formatter(view, context, model, name):
return 'NULL' if len(getattr(model, name)) == 0 else 'a picture'
column_formatters = dict(pic=pic_formatter)
form_overrides = dict(pic= FileUploadField)
form_args = dict(pic=dict(validators=[picture_validation]))
admin = Admin(app)
admin.add_view(UserAdminView(User, db.session, category='Database Administration'))
...
당신은 ModelView
에 대한 문서를 찾을 수 있습니다 :이 사람을 도울 수 있기를 바랍니다 link here 을!
어떻게 사용자를 추가하고 사진을 업로드 하시겠습니까? 2 가지 다른보기를 사용하고 있습니까? 몇 가지 코드를 공유 할 수 있습니까? – codegeek
내 관리자 패널의보기는 다음과 같습니다. http://pastebin.com/9J6pEA0Z. 상상할 수 있듯이 Content와 FileUpload에 대한 별도의 뷰가 렌더링됩니다 (병합하고 싶기 때문에 콘텐츠를 추가하면 URL은 업로드 된 파일과 동일합니다) Thnks! – gpestana