2016-02-16 22 views
0

我的web應用程序有一些特定的後端任務的配置參數。這些配置參數存儲在數據庫中,以便通過管理員輕鬆進行編輯。如何確保只有一行被啓用?

我想提供一個選項來試驗幾個設置,但有一個限制:只有一行必須啓用。

如何確保只有一行被啓用?我如何在管理員中提供一個界面來選擇啓用哪一行?

請注意,我不想將可能的配置行數限制爲一個:我想提供有多個參數集的選項,但只有一個必須是活動的。

回答

1

您可以爲該模型定義一個pre_save信號。在那裏,如果您看到enabled標誌設置爲true,則您在當前所有配置上的查詢都處於啓用狀態。您禁用所有這些並保存當前實例:

def unique_enabled(sender, instance, **kwargs): 
    if instance.enabled: 
     for other in Config.objects.filter(enabled=True).exclude(id=instance.id): 
      other.enabled = False 
      other.save() 
+0

謝謝,有趣。值得注意的是,unique_enabled將被我們禁用的所有對象調用(但是不會執行任何操作,因爲'enabled'是錯誤的) – dangonfast

相關問題