Raphael
Raphael

Reputation: 576

Django Widget SelectMultiple

I am unable to use the widget selectMultiple use by django admin. Form.html on my template, only the "submit" button is displayed. If anyone can help me :) here is my code.

models.py

class Subjects(models.Model):
    sub_name=models.CharField(max_length=100)
    desc=models.CharField(max_length=100)

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

forms.py

class StudentForm(ModelForm):
    class Meta:
        model= Student
        subject=forms.ModelMultipleChoiceField(Subjects.objects.all())


class subAddForm(forms.ModelForm):
    class Meta:
        model = Subjects

views.py

def addSub(request):
    if request.method == "POST":
        form = subAddForm(request.POST)
        if form.is_valid():
            event, created = Subjects.objects.get_or_create(**form.cleaned_data)
            return HttpResponseRedirect('/subject/')
        else:
            return render_to_response('accueil/accueil.html', {'form': form}, context_instance=RequestContext(request))
    else:
        form = subAddForm()
        return render(request, 'accueil/accueil.html', {'form': form})

def form(request):
    stud_form=StudentForm()
    if request.POST:
        stud_form=StudentForm(request.POST)
        stud_form.save()
        return render_to_response("success.html")
    else:
        return render_to_response("test/form.html",{' stud_form': stud_form})


def subject(request):
    subject = Subjects.objects.all()
    return render(request, 'test/subject.html', {'subject': subject})

mon template form.html

    {% extends "base.html" %}

    {% block content %}

        <script type="text/javascript">window.__admin_media_prefix__ = "/static/admin/";</script>

    <script type="text/javascript" src="{{ADMIN_MEDIA_PREFIX}}js/core.js"></script>
    <script type="text/javascript" src="{{ADMIN_MEDIA_PREFIX}}js/getElementsBySelector.js"></script>
    <script type="text/javascript" src="{{ADMIN_MEDIA_PREFIX}}js/actions.js"></script>
    <script type="text/javascript" src="{{ADMIN_MEDIA_PREFIX}}js/SelectBox.js"></script>
    <script type="text/javascript" src="{{ADMIN_MEDIA_PREFIX}}js/SelectFilter2.js"></script>
    <script type="text/javascript" src="/static/js/jsi18n.js"></script>
    <div>
            <div id="overview">
    <form action="" method="POST">{% csrf_token %}
        {{ form.as_p }}
        <input type="submit" value="Submit" />
        </form>
        </div>
        </div>

{% endblock %}

Upvotes: 0

Views: 1104

Answers (1)

Daniel Qiu
Daniel Qiu

Reputation: 633

if you want template for both student and topic, then in your student function of views.py , ' stud_form' should be 'form' without the space

Upvotes: 1

Related Questions