【问题标题】:Flask-Admin Many-to-Many field displayFlask-Admin 多对多字段展示
【发布时间】:2014-02-20 11:10:01
【问题描述】:

我使用 Flask 开发了一个应用程序。我使用 Postgres db (psycop2)、SQLAlchemy 和 Flask-Admin 作为管理界面。我遇到了问题,找不到解决方案。很明显,我在文章和标签表之间有多对多的关系。在 Flask-Admin 界面中,当我尝试将标签添加到 articel(反之亦然)时,它工作正常。但它显示得很糟糕,无法选择正确的标签,因为它显示为一个对象:

这是正确的,因为它是我的模型类的一个实例。但是我怎样才能在这里只显示该模型中单个字段的值呢?我真的不知道该怎么做。管理界面中是否有此类“表单字段”的参数?我什么也找不到。我希望有人知道解决方案。

感谢您的帮助!

【问题讨论】:

  • 您在模型上定义了__unicode__ 吗?

标签: python postgresql sqlalchemy flask flask-admin


【解决方案1】:

为像我这样偶然发现这个答案的人添加这个,它对我不起作用,但是

def __str__(self):
    return self.name

工作得很好;)

【讨论】:

  • 完美适用于删除 unicode() 的 python 3
【解决方案2】:

您需要在模型上定义__unicode__ 方法。在我能够遵循自己的命名约定的应用程序中,我可能会将以下内容放在我所有模型的基类中,并在适当的地方覆盖:

class MyModel(db.Model):
    """ Base class provides the __repr__ so that each model has short type. """
    __abstract__ = True

    def __unicode__(self):
        # attrs = db.class_mapper(self.__class__).column_attrs
        attrs = db.class_mapper(self.__class__).attrs # show also relationships
        if 'name' in attrs:
            return self.name
        elif 'code' in attrs:
            return self.code
        else:
            return "<%s(%s)>" % (self.__class__.__name__,
                ', '.join('%s=%r' % (k.key, getattr(self, k.key))
                    for k in sorted(attrs)
                    )
                )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 2014-03-24
    • 2021-06-01
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多