我的webapp为某些后端任务提供了许多配置参数。这些配置参数存储在数据库中,因此可以通过管理员轻松编辑它们。
我想提供试验几个设置的选项,但有一个约束:只能启用一行。
如何确保只启用一行?如何在管理员中提供界面以选择启用哪一行?
请注意,我不想将可能的配置行数限制为一个:我确实想要提供多个参数集的选项,但只有一个必须是活动的。
答案 0 :(得分: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()