2012-08-01 127 views
2

我有它的管理是遵循一個模式禁用list_editable:Django的基於字段值

class MyModelAdmin(admin.ModelAdmin): 
    list_display = ('invoice_code', 'total_amount', 'paid',) 
    list_editable = ('paid',) 
    search_fields = ('invoice_code',) 

    def __init__(self, *args, **kwargs): 
     super(MyModelAdmin, self).__init__(*args, **kwargs) 
     self.list_display_links = (None,) 

這裏領域支付是booleanfield,默認狀態下,將取消選中。我想要實現的是,支付的字段在未選中時應該是可編輯的,並且在檢查時應該只讀。我想在list_editable中實現此目的。是否有可能實現這一目標?如果是這樣,該怎麼辦?感謝提前。

回答

2

據我可以告訴你,只能在list_editable中使用默認字段。這些字段僅支持與這些默認字段關聯的標準行爲。另外,您可以在表中的記錄上執行的操作彼此相等。

如果你想要在行到行的基礎上實現自定義行爲,我相信你必須在模型中實現一個函數,該函數返回一個可檢查的時候可編輯的字段,以及未檢查時的不可編輯的字段。這僅僅是返回一個基於你提供的類和一些JS的活動或不是活動的html複選框的問題。您也可以直接將其實施到具有禁用屬性的輸入複選框中。

爲了更新複選框和指定的字段,你必須通過ajax POST命令(通過jquery或其他)更新值到後端,或者你必須改變行爲的形式/視圖,並且必須通過保存進行更新。

希望這會有所幫助。