首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的Flask-AppBuilder项目只显示相关表的ID,而不是它的名称,为什么?

我的Flask-AppBuilder项目只显示相关表的ID,而不是它的名称,为什么?
EN

Stack Overflow用户
提问于 2017-11-15 19:49:04
回答 1查看 425关注 0票数 0

我将使用F.A.B的快速自定义IoT应用程序网络作为后端。

通过运行F.A.B教程和文档的示例项目http://127.0.0.1:5000/contactmodelview/list/ ContactView list页面,联系人组以黑色显示,而不是id。

我克隆了这个设计,有一个1:N的关系(一个账号有很多设备,就像ContactGroup有很多联系人一样),代码如下:

models.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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视图中,将显示帐户名。

有什么不同?

EN

回答 1

Stack Overflow用户

发布于 2017-11-15 19:56:12

我找到了原因,并将我的视图代码更改为:

代码语言:javascript
复制
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”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47306641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档