我使用Flask开发应用程序。我使用Postgres db(psycop2),SQLAlchemy和Flask-Admin作为管理界面。我遇到了问题,无法找到解决方案。我明确了文章和标签表之间的多对多关系。在Flask-Admin界面中,当我尝试将标签添加到articel(或反之亦然)时,它工作正常。但它显示得非常糟糕,无法选择正确的标记,因为它显示为对象:
这是正确的,因为它是我的模型类的一个实例。但是,我如何才能在此显示该模型中单个字段的值?我真的不知道该怎么做。管理界面中是否存在此类“表单字段”的参数?我一无所获。我希望sombody知道解决方案。
感谢您的帮助!
答案 0 :(得分:7)
为像我这样偶然发现这个答案的人添加这个,它对我不起作用,但是
def __str__(self):
return self.name
工作得很好;)
答案 1 :(得分: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)
)
)