2014-02-26 34 views
0

首先,我不是python證明。Flask-admin:flask.ext.admin.contrib.sqla - ModelView - form_columns

我不知道真正瞭解有關在文檔中ModelView下面的句子(http://flask-admin.readthedocs.org/en/latest/api/mod_contrib_sqla/):

類從BaseModelView繼承了配置選項和他們 不在這裏顯示

據我所知,從ModelView繼承的類應繼承BaseModelView的配置選項

BaseModelView有一個form_columns方法。然後,我不明白爲什麼我用下面的代碼得到了以下錯誤ValueError: Invalid model property name <class 'app.models.Idcard'>.n

models.py

class Idcard(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.String(128), nullable=False) 

    def __repr__(self): 
     return '%s' % unicode(self.name) 

views.py

class IdcardView(ModelView): 
    form_columns = ('name') 

admin.add_view(IdcardView(Idcard, db.session) 

據我理解錯誤,問題來自nameform_columns = ('name')但這顯然是我的模型類Idcard的參數。

如果有人有一個想法.....!

回答

2

form_columns屬性接收元組。一個項目的元組需要逗號:('name',)

沒有逗號,它只是一個字符串和flask-admin失敗迭代每個字符(第一個是n)。

所以,只是改變:

class IdcardView(ModelView): 
    -form_columns = ('name') 
    +form_columns = ('name',) 
+1

理解並感謝很多你這麼快的答案。我應該找到這個,因爲錯誤結束時的'n'!順便說一句,它解決了我的模型定義中'nullable = False'的另一個問題。我會做另一個帖子來解釋這一點。 – Youpsla