Flaskadmin,编辑关系给我外键obj的对象表示

2024-05-29 01:37:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个烧瓶项目,我开始学习烧瓶管理模块。在

所需表的SqlAlchemy架构。在

import datetime
import sqlalchemy
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import backref, relationship

Base = declarative_base()


class Workgroup(Base):
    __tablename__ = 'workgroups'
    id = sqlalchemy.Column(sqlalchemy.Integer,

                           primary_key=True,
                           autoincrement=True
                           )
    name = sqlalchemy.Column(sqlalchemy.String(16))
    shorthand = sqlalchemy.Column(sqlalchemy.String(4))

    def __unicode__(self):
        return self.name

class Drive(Base):
    """
    A drive in an edit station.
    """
    __tablename__ = 'drives'

    id = sqlalchemy.Column(sqlalchemy.Integer,
                           primary_key=True,
                           autoincrement=True
                           )
    name = sqlalchemy.Column(sqlalchemy.String(64))
    computer_id = sqlalchemy.Column(sqlalchemy.Integer,
                                    sqlalchemy.ForeignKey(Computer.id)
                                    )
    computer = relationship('Computer', backref='drives')
    is_active = sqlalchemy.Column(sqlalchemy.Boolean)
    free_space = sqlalchemy.Column(sqlalchemy.BigInteger)
    used_space = sqlalchemy.Column(sqlalchemy.BigInteger)
    total_space = sqlalchemy.Column(sqlalchemy.BigInteger)
    percentage_full = sqlalchemy.Column(sqlalchemy.Float)
    boot_time = sqlalchemy.Column(sqlalchemy.DateTime)

    last_changed_workgroup = sqlalchemy.Column(sqlalchemy.DateTime)
    last_checked_in = sqlalchemy.Column(sqlalchemy.DateTime)
    last_notified = sqlalchemy.Column(sqlalchemy.DateTime)
    image_version = sqlalchemy.Column(sqlalchemy.String(64))
    image_date = sqlalchemy.Column(sqlalchemy.DateTime)
    current_workgroup_id = sqlalchemy.Column(sqlalchemy.Integer,
                                             sqlalchemy.ForeignKey(Workgroup.id)
                                             )
    workgroup = relationship('Workgroup', backref='drives')

管理测试

^{pr2}$

将“工作组”的表单列替换为工作组名称'给了我一个无效的模型属性名,即使我成功地使用了架构.工作组.名称代码中的其他地方。在

生成的管理表单如下所示。enter image description here

我怎么才能得到工作组名称与对象表示相对应的值?在

谢谢你的阅读!在


Tags: nameimportidtruebasedatetimestringsqlalchemy
1条回答
网友
1楼 · 发布于 2024-05-29 01:37:16

您需要让workgroup类通过repr函数返回其名称。那样的话,它就会出现在现场。在

class Workgroup(Base):
    __tablename__ = 'workgroups'
    id = sqlalchemy.Column(sqlalchemy.Integer,

                           primary_key=True,
                           autoincrement=True
                           )
    name = sqlalchemy.Column(sqlalchemy.String(16))
    shorthand = sqlalchemy.Column(sqlalchemy.String(4))

    def __unicode__(self):
        return self.name

    def __repr__(self):
        return '<Workgroup %r>' % (self.name)

相关问题 更多 >

    热门问题