2017-11-15 4 views
0

Ich werde F.A.B für schnelle benutzerdefinierte IoT APP Web als Backend verwenden.Mein Flask-AppBuilder-Projekt zeigt nur die ID für die zugehörige Tabelle anstelle des Namens an. Warum?

Durch Ausführen des Beispielprojekts von F.A.B Tutorial und Dokumente, die http://127.0.0.1:5000/contactmodelview/list/ ContactView Liste Seite, die Kontaktgruppe wird als Name in schwarz anstelle von ID angezeigt.

enter image description here

ich das Design geklont, gibt es eine 1: N-Verhältnis (ein Konto hat viele Geräte, genauso wie viele Kontakte Kontaktgruppe hat), ist hier der Code:

models.py

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 

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] 

jedoch die Liste DeviceView zeigt die zugehörige ID in Blau an und es wird kein Kontoname angezeigt. In der DeviceDetail-Ansicht wird jedoch der Kontoname angezeigt.

enter image description here

Was ist der Unterschied?

Antwort

0

fand ich den Grund, und meine Ansicht Code ändern, wie folgend:

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} 
    ), 
    ] 

Die wichtigsten Unterschiede Feld ‚OWNER_ID‘ mit ‚Eigentümer‘ ersetzen.

Verwandte Themen