Django根据字段值禁用list_editable

时间:2012-08-01 09:44:57

标签: django django-admin

我有一个模型,其管理员如下:

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, )

此处付费字段是一个布尔字段,默认情况下将取消选中。我想要实现的是,付费字段在未选中时应该是可编辑的,并且在选中时应该是只读的。我想在 list_editable 中实现这一目标。是否有可能实现这一目标?如果是这样,怎么办?谢谢你的到来。

1 个答案:

答案 0 :(得分:2)

据我所知,你只能使用list_editable中的默认字段。这些字段仅支持与这些默认字段关联的标准行为。此外,您可以对表中的记录执行的操作彼此相等。

如果你想在行到行的基础上实现自定义行为,我相信你必须在你的模型中实现一个函数,它返回一个可以在被选中时编辑的字段,并且在未选中时是不可编辑的。这只是返回一个html复选框的问题,该复选框是活动的还是不活动的,基于你提供的类和一些JS。您也可以将其直接实现到具有禁用属性的输入复选框中。

为了更新复选框和指定的字段,你必须通过ajax POST命令(通过Jquery或其他东西)将值更新到后端,或者你必须改变行为表单/视图,必须通过保存来更新。

希望这有帮助。