2013-08-22 28 views
3

我加了一個布爾字段從這樣的時間計算:如何在django admin中對我自己的字段進行過濾?

def is_active(self): 
    if self.inactive_to and self.available_until: 
     if datetime.date.today()>=self.inactive_to and datetime.date.today()<=self.available_until: 
      return True 
     else: 
      return False 
    elif self.inactive_to: 
     if datetime.date.today()>=self.inactive_to: 
      return True 
     else: 
      return False 
    elif self.available_until: 
     if datetime.date.today()<=self.available_until: 
      return True 
     else: 
      return False 
    else: 
     return True 
is_active.short_description = 'Available' 
is_active.boolean = True 

但如果我嘗試將它添加到「list_filter」我得到錯誤「‘RealtyAdmin.list_filter [0]’是指‘IS_ACTIVE’,這並不是指一個字段。「

我可以避免它,或添加將自動計算的模型fild?

回答

2

admin不是從django.db.models.fields分類的字段。

這就是'is_active' which does not refer to a Field."是說..

0

這聽起來像你混淆list_displaylist_filter。您的代碼是用於在list_display中添加新列,但標題和錯誤消息請參閱list_filter

0

Django的ORM無法找到名爲is_active數據庫字段的描述,因爲它是一個Python函數。 Django管理員不啓用通過python函數返回的結果進行排序或篩選。然而,正如你所說的,你可以在你的模型中添加一個包含你想要的值的字段,然後將其添加到list_filter

相關問題