2016-11-21 3 views
0

Ich stecke mit Django fest und würde gerne mehr und mehr zu diesem Framework lernen. Ich lese einige Tutorials (Englisch und Französisch Tutorials) und als ich anfange, finde ich nicht, was ich will.ModelChoiceField mit Django Forms

Ich habe ein forms.py file in meinem App-Verzeichnis:

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

from django import forms 

class BirthCertificateForm (forms.Form) : 

# rowid = forms.IntegerField() # rowid primary key 
# numero_acte = forms.IntegerField() # Form number 
    date_acte = forms.DateField('%d/%m/%Y') # Form date 
    heure_acte = forms.TimeField('%H:%M:%S') # Form hour 
    nom = forms.CharField(max_length=30, label=u"Nom") # Lastname 
    prenom = forms.CharField(max_length=30, label=u"Prénom") # Firstname 
    sexe = forms. # <== I would like to have the choice between 'M' or 'F' 

Und das ist meine views.app Datei:

from django.shortcuts import render_to_response 
from django.http import HttpResponse 
from django.template import loader 
from BirthCertificate.forms import BirthCertificateForm 

# Create your views here. 

def BirthCertificateAccueil(request) : 
    # Fonction permettant de créer la page d'accueil de la rubrique Acte de Naissance 

    #Cherche le fichier html accueil et le renvois 
    template = loader.get_template('accueil.html') 
    return HttpResponse(template.render(request)) 


def BirthCertificateCreationAccueil(request) : 
    # Fonction permettant de créer la page de création du formulaire de la partie : Acte de Naissance 

    template = loader.get_template('creation_accueil.html') 
    return HttpResponse(template.render(request)) 

def BirthCertificateForm(request) : 
    # Fonction permettant de créer le formulaire Acte de Naissance et le remplissage 

    if request.method == 'POST' : 
     form = BirthCertificateForm(request.POST or None) 

     if form.is_valid(): 
      numero_acte = form.cleaned_data["Numero de l'acte"] 
      nom = form.cleaned_data['Nom'] 
      prenom = form.cleaned_data['Prenom'] 

    return render_to_response(request, 'birthform.html', {'form' : form}) 

1) Ich mag die Wahl zwischen zwei Optionen in sexe Feld haben. Der Benutzer muss M oder F auswählen. Ich denke, ich muss ModelChoiceField verwenden, aber ich weiß nicht, wie ich diese Funktion verwenden kann.

2) Andere Frage: Wenn die Verwendung das Formular übermittelt, wird die Datenbank, die dahinter steht, richtig aktualisiert? Also muss ich das rowid irgendwo angeben oder es wird automatisch hinzugefügt?

Vielen Dank!

+0

Haben Sie ein Modell, mit dem dieses Formular verknüpft ist? Und auch fast alles, was Sie in [Django greatest docs] finden können (https://docs.djangoproject.com/de/1.10/) !!! –

+0

@vishes_shell Nein, meine models.py-Datei ist leer. Ist es notwendig, einen zu haben? Das Tutorial, dem ich folge, gibt keine Modelldatei an. – Deadpool

Antwort

2

ModelChoiceField für, nun ja, Entscheidungen, die von Modellen kommen. Wenn Sie keine Modelle wollen (und ich verstehe nicht, was Sie mit Ihren Daten machen, wenn Sie es nicht tun, aber egal), dann verwenden Sie einfach ChoiceField.

sexe = forms.ChoiceField(choices=(('M', 'Mâle'), ('F', 'Femelle')) 
+0

Vielen Dank für Ihre Antwort. Mit meinen Formulardaten möchte ich zum Beispiel einige Variablen in einem Text ersetzen. Ich schreibe keine Modelldatei, da das Tutorial, dem ich folge, keine model.py-Datei angibt. Aber wenn es notwendig ist, werde ich eins machen. – Deadpool

+0

Sogar Hauch von Französisch, ich mag es! :) –

0

Sie benötigen kein Modell zum Speichern von Geschlechtsinformationen. Alles, was Sie brauchen, ist einfach CharField mit Auswahlmöglichkeiten.

haben Sie einen Blick auf das Beispiel in dieser Antwort: https://stackoverflow.com/a/8077907/4890586

Verwandte Themen