0
我的web應用程序有一些特定的後端任務的配置參數。這些配置參數存儲在數據庫中,以便通過管理員輕鬆進行編輯。如何確保只有一行被啓用?
我想提供一個選項來試驗幾個設置,但有一個限制:只有一行必須啓用。
如何確保只有一行被啓用?我如何在管理員中提供一個界面來選擇啓用哪一行?
請注意,我不想將可能的配置行數限制爲一個:我想提供有多個參數集的選項,但只有一個必須是活動的。
我的web應用程序有一些特定的後端任務的配置參數。這些配置參數存儲在數據庫中,以便通過管理員輕鬆進行編輯。如何確保只有一行被啓用?
我想提供一個選項來試驗幾個設置,但有一個限制:只有一行必須啓用。
如何確保只有一行被啓用?我如何在管理員中提供一個界面來選擇啓用哪一行?
請注意,我不想將可能的配置行數限制爲一個:我想提供有多個參數集的選項,但只有一個必須是活動的。
您可以爲該模型定義一個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()
謝謝,有趣。值得注意的是,unique_enabled將被我們禁用的所有對象調用(但是不會執行任何操作,因爲'enabled'是錯誤的) – dangonfast