Django выбрать виджет не обновляется, когда я передаю выбор в него - PullRequest
0 голосов
/ 17 ноября 2010

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

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

назначение вариантов выбора

form.fields['size_option'].widget.attrs['choices'] = Product.get_options(product)

код, который генерирует варианты выбора

def get_options(self):
    optionset = "("
    for option in self.optionset.options.all():
        optionset = optionset + "(\'" + option.name + "\', \'" + option.name + "\')"
    optionset = optionset + ")"
    pdb.set_trace()
    return optionset

HTML-код, созданный для выбора, приведен ниже.

<select id="id_size_option" name="size_option" choices="((&#39;Small&#39;, &#39;Small&#39;)(&#39;Medium&#39;, &#39;Medium&#39;)(&#39;Large&#39;, &#39;Large&#39;))"> 

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

1 Ответ

1 голос
/ 17 ноября 2010

Что это должно делать?Формат списка вариантов выбора - стандартный кортеж:

CHOICES = (
    ('x', 'choice x'),
    ('y', 'choice y'),
)

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

Во-вторых, choicesне является элементом attrs виджета, это атрибут поля и / или самого виджета:

form.fields['size_option'].choices = product.get_options()

В любом случае, вы, возможно, захотите использовать здесь ModelChoiceField, тогда вы можетеустановите атрибут queryset в список требуемых опций.

Наконец, вы не вызываете метод экземпляра с помощью Class.method(instance), вы вызываете его с помощью instance.method() - в вашем случае, product.get_options(),

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...