[Django]Form mit ModelChoiceField

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
ferix
User
Beiträge: 128
Registriert: Sonntag 1. Juni 2008, 18:21

Hallo,

ich habe gerade versucht eine Form mit einem ModelChoiceField zu bauen, aber irgendwie will das nicht so ganz klappen. Eine Fehlermeldung bekomme ich nicht, aber eine Select-Box wird auch nicht ausgegeben. Hier mal meine Codes der Form und dazugehörigem Template.

forms.py

Code: Alles auswählen

#-*- coding: utf-8; -*-

# Imports von Django
from django import forms
from models import Mainpages, Configuration, Videos

class ContactForm(forms.Form):
    name = forms.CharField(max_length=200, error_messages={'required': 'Bitte Name eingeben!'})
    email = forms.EmailField(error_messages={'required': 'Bitte E-Mail eingeben!'})
    message = forms.CharField(widget=forms.Textarea, error_messages={'required': 'Bitte Nachricht eingeben!'})
    test = forms.ModelChoiceField(queryset=Mainpages.objects.all(), empty_label="Bitte wählen...")
kontakt.html

Code: Alles auswählen

{% extends "base.html" %}

{% block content %}
        <h1>{{ content.ueberschrift }}</h1>
        {% autoescape off %}
        {{ content.text }}
        {% endautoescape %}
        <p><br /><strong>Kontaktformular</strong></p>
        
        {% for field in form %}
            {{ field.errors }}
        {% endfor %}

        <form action="/Kontakt" method="POST">
          <table class="kontaktformular">
            <tr>
              <td>Name:*</td>
              <td>{{ form.name }}</td>
            </tr>
            
            <tr>
              <td>E-Mail:*</td>
              <td>{{ form.email }}</td>
            </tr>

            <tr>
              <td>Nachricht:*</td>
              <td>{{ form.message }}</td>
            </tr>
            
            <tr>
              <td>Test:*</td>
              <td>{{ form.test }}</td>
            </tr>
               
            <tr>
              <td></td>
              <td><input type="submit" value="Abschicken" class="button" /></td>
            </tr>
          </table>
          <p>Die mit * gekennzeichneten Felder sind Pflichtfelder.</p>         
        </form>
{% endblock %}
Die relevanten Stellen aus dem dazugehörigen View:

Code: Alles auswählen

def contact(request):
    try:            
        ...
        # Kontaktformular auswerten
        if request.method == 'POST': 
            form = ContactForm(request.POST) 
            if form.is_valid(): 
                name = form.cleaned_data['name']
                email = form.cleaned_data['email']
                message = form.cleaned_data['message']
                test = form.cleaned_data['test']
                
                recipients = ['hpd@nimsky.de']
    
                #send_mail(subject, message, email, recipients)
                sender = "%s <%s>" % (name,email)
                message = "%s" % (message)
                msg = EmailMessage('Anfrage von intrinsischekompetenz.de', message, sender, recipients)
                msg.send()

                return render_to_response("ihre_nachricht.html", {"content": content, "navi": navi, "quicknavi": quicknavi, "metainfo": metainfo, "active_url": "Kontakt"})
        else:
            form = ContactForm()
        
        # Seite über Template kontakt.html ausgeben
        return render_to_response("kontakt.html", {"form": form, "content": content, "navi": navi, "quicknavi": quicknavi, "metainfo": metainfo, "active_url": "Kontakt"})

    # 404 Exceptions auffangen (und werfen)
    except Mainpages.DoesNotExist, dne:
        raise Http404
ferix
User
Beiträge: 128
Registriert: Sonntag 1. Juni 2008, 18:21

Aus welchen Gründen auch immer funktioniert auch die automatische Generierung des Formulars über {{ form.as_table }} zum Beispiel nicht.

Könnte das auch der Grund sein, wieso die Select in meinem spezifischen Template nicht erzeugt wird???

Nur woran hängt das?
Antworten