2010-10-24 3 views
2

Я искал и пытаюсь получить эту работу в течение последних нескольких часов, и я не могуДжанго ModelMultipleChoiceField (значения по умолчанию)

У меня есть список навыков, которые я беру из базы данных:

forms.ModelMultipleChoiceField(
           skills.objects.all(), 
           required=True, 
           widget=forms.CheckboxSelectMultiple(), 
           label='Check your skills.', 
           initial=skill_list.objects.filter(user='void'), 
          ) 

но это не работает, как я ожидал бы, что это сработает. Я в основном хочу отобразить список навыков (все из них) и те, которые пользователь проверил, чтобы их проверить ... pff Я не могу даже объяснить правильно.

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

Допустим, у меня есть abc и проверяет пользовательские b и хиты смиряться, когда в ж/д страницы Я хочу, чтобы отобразить a uncheked b проверил c бесконтрольно.

PS: Если я использую skills.objects.all(), я получаю в HTML value 1 и как я могу сделать это так:

skills = (
     ('a', 'a'), 
     ('b', 'b'), 
     ) 

Вместо ('1', 'a'), ('2', 'b').

ответ

2

Ваш вопрос (ы) немного неясен, но я все еще стараюсь изо всех сил.

Во-первых,

Я хочу отобразить все навыки и один пользователь проверил провериться ...

Форма оленья кожа имеет доступ к пользователю, так что вам необходимо пройти это пользователь. Вы можете сделать это путем перегрузки метода __init__ следующим образом:

def __init__(self, **kwargs): 
     current_user = kwargs.pop ('user') 
     super(FormName, self).__init__(attrs) 

затем для установки первоначально выбранных значений,

self.fields['skills'].initial = skill_list.objects.filter(user='void') 

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

Наконец,

PS: если я использую skills.objects.all() Я получить в HTML значение 1 и как можно я сделать это как

навыков = ( ('а', 'а'), ('б', 'б'), )

вместо ('1', 'а'), ('2', 'б')

Зачем вам это нужно? Цифры - это первичные ключи строк из таблицы «навыки». Django использует это для настройки соответствующих отношений.

+0

Зачем мне это делать? в первую очередь thx для вас ответ ...после того, как пользователь отправляет эту форму, я хочу иметь значение а вместо 1, потому что я не хочу запросить дб для того, что 1 и на основе этого делать ... Dont л знаю, если это правильный путь, я мог бы использовать первичный ключ но я ленив: D thx снова для вашего ответа :) – void

Смежные вопросы