我将使用F.A.B作为快速自定义IoT APP Web作为后端。
通过运行F.A.B教程和文档的示例项目http://127.0.0.1:5000/contactmodelview/list/ ContactView列表页面,联系人组显示为名称,黑色而不是id。
我克隆了设计,有一个1:N关系(一个帐户有很多设备,和ContactGroup有很多联系人一样),这里是代码:
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]
但是,DeviceView列表以蓝色显示相关ID,并且不显示帐户名称。但是,在DeviceDetail视图中,将显示“帐户名”。
差异是什么?
答案 0 :(得分: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'替换为'owner'。