带有Django Forms的ModelChoiceField

时间:2016-11-21 09:03:54

标签: python django django-forms

我坚持使用Django,我想在这个框架上学到越来越多。我读了一些教程(英语和法语教程),当我开始时,我找不到我想要的东西。

我的app目录中有一个forms.py file

#-*- 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'

这是我的views.app文件:

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)我想在sexe领域中选择2个选项。用户必须选择MF。我想我必须使用ModelChoiceField,但我不知道如何使用此功能。

2)其他问题:当使用提交表单时,后面的数据库更新了吗?所以我必须在某处指定rowid或自动添加?

非常感谢你!

2 个答案:

答案 0 :(得分:2)

ModelChoiceField适用于来自模型的选择。如果你不想要模型(如果不这样做,我不明白你对你的数据做了什么,但没关系),那么你只需使用ChoiceField

sub show ( $seq ) { .say for |$seq }

答案 1 :(得分:0)

您无需拥有存储性别信息的模型。您只需要CharField就可以选择。

请查看此答案中的示例:https://stackoverflow.com/a/8077907/4890586