2014-01-28 40 views
2

我使用Flask開發應用程序。我使用Postgres db(psycop2),SQLAlchemy和Flask-Admin作爲管理界面。我遇到問題並找不到解決方案。我很清楚文章和標籤表之間有多對多的關係。在Flask-Admin界面中,當我嘗試向標籤添加標籤(或反之亦然)時,它工作正常。但它顯示很糟糕,不可能選擇正確的標籤,因爲它顯示爲一個對象:enter image description hereFlask-Admin多對多字段顯示

而這是正確的,因爲它是我的模型類的一個實例。但是,我怎樣才能在這裏顯示來自該模型的單個字段的值?我真的不知道該怎麼做。管理界面中是否有這種「表單域」的參數?我什麼也找不到。我希望sombody知道解決方案。

感謝您的幫助!

+3

你有一個'__unicode__'在模型中定義? – karthikr

回答

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) 
        ) 
       ) 
+1

+1 for'object .__ class __.__ name__' – Jivan

6

在這個答案添加此人喜歡我,失足,它沒有爲我工作,但

def __str__(self): 
    return self.name 

工作就好了;)

+0

因爲您使用的是Python 3,所以投票結果爲upvoted。 –

+0

完美適用於python 3,它刪除了unicode() –

+0

這完全適用於python 3.謝謝。 –