2015-06-05 5 views
0

У меня есть модель с полем ManyToMany. Он исходил из законной базы данных с предопределенной схемой. Когда я создаю модельную модель для этой модели, она использует поле Multi select для отображения поля ManyToMany. Те, которые создали db, вместо этого выбирают поле select (not multi).ManyToManyField с помощью виджета выбора

# models.py 

class MyModel(models.Model): 
    mtmfield = models.ManyToManyField(MyModel2) 

# forms.py 

class MyModelForm(ModelForm): 

    class Meta: 
     model = MyModel 
     widgets = Select() #this is what I want. 

Использование выбора не позволит мне сохранить модель с помощью form.save(), потому что он ожидает список значений. Будет ли это работать, если я «обходил» это, переопределив функцию сохранения моей модели, захватив MyModel2, выбранный в выбранном, и сохранит его вручную?

+0

Я думаю, что 'form.MultipleChoiceField' будет работать так же, как хорошо. Он ожидает одно или несколько значений. Вы сможете использовать 'form.save()'. Но вы пытались? – xyres

+0

Да, да. Я знаю, что это работает. Но я хочу, чтобы это выглядело как поле «Выбрать». Как презентация. – Apostolos

+1

Если вы хотите сделать его похожим на поле «Выбрать», сделайте это - 'forms.MultipleChoiceField (widget = forms.Select)'. Это даст вам поле «Выбор», но вы не сможете выбрать несколько значений. – xyres

ответ

0

Вы можете изучить Select2. Он может быть представлен как один элемент стиля select, но позволяет выбрать несколько значений.

-1

Просто добавьте эту функцию в форму:

def clean_mtmfield(self): 
    data = self.cleaned_data['mtmfield'] 
    return [data] 
Смежные вопросы