2017-11-15 8 views
0

私はバックエンドとして高速のカスタムIoT APP Web用にF.A.Bを使用します。My Flask-AppBuilderプロジェクトでは、名前の代わりに関連テーブルのIDのみが表示されます。なぜですか?

F.A.Bチュートリアルとドキュメントのサンプルプロジェクトであるhttp://127.0.0.1:5000/contactmodelview/list/ ContactViewリストページを実行すると、連絡先グループはidの代わりに黒で名前として表示されます。

enter image description here

私はデザインをクローン化し、1があります:Nの関係(CONTACTGROUPと同じには多くの接点を持っているように、1つのアカウントは、多くのデバイスを持っている)、ここでのコードは次のとおりです。

models.py

しかしviews.py

class DeviceView(ModelView):   
    datamodel = SQLAInterface(Device) 
    related_views = [ApplicationView, EventView] 

    label_columns = {'snr':'SNR', 'api_dev_id':'Device ID', 'owner_id':'Owner'} 
    list_columns = ['snr','name','addr','owner_id'] 

    show_fieldsets = [ 
    ('Summary', 
     {'fields':['snr','name','owner_id']} 
    ), 
    ('Device Info', 
      {'fields':'addr','latitude','longitude','status','api_id','api_key','api_dev_id','api_dev_key'],'expanded':True} 
    ), 
    ] 


class AccountView(ModelView): 
    datamodel = SQLAInterface(Account) 
    related_views = [DeviceView] 

class Account(Model): 
    id = Column(Integer, primary_key = True) 
    username = Column(String(128), unique = True) 
    password = Column(String(128)) 
    email = Column(String(128)) 
    oauth = Column(String(128)) 
    cellphone = Column(String(32)) 

    def __repr__(self): 
     return self.username 

class Device(Model): 
    id = Column(Integer, primary_key = True) 
    snr = Column(String(256), unique = True) 
    name = Column(String(128)) 
    addr = Column(String(256)) 
    latitude = Column(Float) 
    longitude = Column(Float) 
    status = Column(Integer) 
    api_id = Column(String(512)) 
    api_key = Column(String(256)) 
    api_dev_id = Column(String(256), unique = True) 
    api_dev_key = Column(String(256)) 
    owner_id = Column(Integer, ForeignKey('account.id'))  
    owner = relationship("Account") 

    def __repr__(self): 
     return self.name 

、リストDeviceViewの関連IDが青色で表示され、No Account nameが表示されます。ただし、DeviceDetailビューでは、アカウント名が表示されます。

enter image description here

の違いは何ですか?

答えて

0

私は理由を見つけ、次のように私の見解コードを変更:

class DeviceView(ModelView):   
    datamodel = SQLAInterface(Device) 
    related_views = [ApplicationView, EventView] 

    label_columns = {'snr':'SNR', 'api_dev_id':'Device ID', 'owner_id':'Owner'} 
    list_columns = ['name','snr','addr','owner'] 

    show_fieldsets = [ 
    ('Summary', 
     {'fields':['snr','name','owner']} 
    ), 
    ('Device Info', 
     {'fields':['addr','latitude','longitude','status','api_id','api_key','api_dev_id','api_dev_key'],'expanded':True} 
    ), 
    ] 

を主な違いは、「所有者」と「OWNER_ID」フィールドを交換します。