只允许Select One Django_tables2

时间:2016-12-07 11:24:16

标签: python django checkbox django-tables2

我有一个填充使用django_tables2的表,有两列:

tables.py

class SummaryTable(tables.Table):

    update = CheckBoxColumnWithName(verbose_name = "Select",accessor="pk", 
                                   orderable=False)

    class Meta:
        model = Vehicle
        fields = ('update', 'vehid')

        # Add class="paleblue" to <table> tag
        attrs = {'class':'paleblue'}

列更新和车辆。

我需要的是限制用户只选择一个复选框,如果他们选择另一个复选框,则取消选择第一个复选框并选择新选项。

有人可以建议怎么做吗?

1 个答案:

答案 0 :(得分:0)

这是我在弹出表中使用的特殊用途table2列的来源。 Javascript将结果发送回父窗口,该窗口调用弹出窗口并关闭窗口。如何做到这一点是一个Javascript问题,而不是Python / Django问题,我很确定我这样做的方式不是最好的,因为JS不是我的优势之一。无论如何,Python部分:

class SelectorColumn( tables.Column):
    """ a special column that will normally be used only by selectPopupFactory """ 
    def __init__( self, *a, **kw):
        clickme = kw.pop('clickme', None) # html or by default, the column value as link
        super().__init__( *a, **kw)
        self.clickme = mark_safe(clickme)

    def render( self, value):
        return format_html( "<a href='#' onclick='return returnResultAndClose(\"{}\");'>{}</a>", value, self.clickme or value )

根据你的要求,我建议JS&#34; returnResultAndClose&#34;应填充一个隐藏的输入框(如果有的话,覆盖其先前的内容),因此当表格被汇总时,只返回要选择的最后一个项目。