2014-02-04 2 views
0

Прежде всего, простите за мой английский ^^Джанго Selectmultiple

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

Пример, у меня есть два класса:

class Student(models.Model): 
    name=models.CharField(max_length=100) 
    subject=models.ManyToManyField(Subjects) 
class Subjects(models.Model): 
    sub_name=models.CharField(max_length=100) 
    desc=models.CharField(max_length=100) 

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

Я надеюсь, вы понимаете, о чем я спрашиваю ^^

Tks :)

+1

'Subject = ManyToManyField (субъекты)' должны быть: ' subject = models.ManyToManyField ('Subjects') ' – petkostas

+0

tks это правильно :) – Raphael

ответ

0

сначала нужно иметь StudentForm в models.py

class StudentForm(ModelForm): 
    subject = forms.ModelMultipleChoiceField(queryset=Subjects.objects.all()) 
    #this would use widget 'SelectMultiple' by default 

    class Meta: 
     model = Plan 
     fields = ['name','subject'] 

если вы хотите использовать флажок виджет:

subject = forms.ModelMultipleChoiceField(queryset=Subjects.objects.all(),widget=CheckboxSelectMultiple()) 

затем в views.py:

class StudentFormView(View): 

    form_class = StudentForm 
    template_name = 'your_template.html' 

    def get(self, request): 
     form = self.form_class() 
     return render(request, self.template_name, {'form': form}) 

    def post(self, request): 
     form = self.form_class(request.POST) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('whatever_url_you_like/') 
     return render(request, self.template_name, {'form': form}) 

в вашем urls.py добавить следующее:

url(r'url_to_your_form^$',StudentFormView.as_view()) 

в your_template.html добавить это в теле:

<form action="." method="post">{% csrf_token %} 
    {{ form.as_p }} 
    <input type="submit" value="Submit" /> 
+0

он не работает, я имею в виду, что я не могу заставить его работать ... – Raphael

+0

что у вас есть? Вы разместили свое приложение в файле settings.py? Вы синхронизировали? какое сообщение об ошибке у вас есть? –

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