3

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

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

谢谢你的帮助!

4

2 回答 2

7

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

def __str__(self):
    return self.name

工作得很好;)

于 2016-08-02T16:43:12.900 回答
5

您需要__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)
                    )
                )
于 2014-01-29T06:33:01.340 回答