2016-12-07 4 views
0

У меня есть таблица, заполняющую на использование 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'} 

Колонна обновление и vehid.

Что мне нужно, так это ограничить пользователя только одним флажком, если они выбирают другой флажок, он отменяет выбор первого и выбирает новый выбор.

Может ли кто-нибудь посоветовать, как это сделать?

+0

Что такое CheckBoxColumnWithName? Я не вижу его в таблицах 2 doc по адресу http://django-tables2.readthedocs.io/en/latest/pages/api-reference.html#column – nigel222

+0

@ nigel222 это обычная 'CheckBoxColumn', которая позволяет заголовок – Jim

+0

Я бы предположил, что вы хотите создать пользовательский столбец, который будет генерировать столбец радиокнопками или столбец кнопок, связанных с JavaScript, который скопирует последний выбор в (возможно, скрытое) поле ввода. Тем не менее, я не собираюсь писать это! – nigel222

ответ

0

Вот источник таблиц специального назначения2, которые я использую во всплывающих таблицах. 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 «returnResultAndClose» должен заполнить скрытый поле ввода (перезапись его предыдущее содержимое, если таковые имеются), поэтому, когда форма sumbitted, возвращается только последний элемент, который нужно выбрать.