Python Django用户表单don';不能在数据库上保存

Python Django用户表单don';不能在数据库上保存,python,html,django,twitter-bootstrap,twitter-bootstrap-3,Python,Html,Django,Twitter Bootstrap,Twitter Bootstrap 3,我已经创建了一个Model、Form、View和register.html,但我的表单没有保存在数据库中,也没有创建新用户。怎么了 遵循代码 models.py from __future__ import unicode_literals from django.db import models from django.contrib.auth.models import User class Cliente(models.Model): SEXO_CHOICES = (

我已经创建了一个Model、Form、View和register.html,但我的表单没有保存在数据库中,也没有创建新用户。怎么了

遵循代码

models.py

from __future__ import unicode_literals

from django.db import models

from django.contrib.auth.models import User


class Cliente(models.Model):

    SEXO_CHOICES = (
        (u'Masculino', u'Masculino'),
        (u'Feminino', u'Feminino'),
    )

    nome = models.CharField(max_length=50, null=False, default='*')
    telefone = models.CharField(max_length=20, null=True)
    cpf = models.CharField(max_length=255, null=False)
    data_de_nascimento = models.DateField(null=False)
    sexo = models.CharField(max_length=9, null=False, choices=SEXO_CHOICES)
    usuario = models.OneToOneField(User, related_name="cliente")

    @property
    def email(self):
        return self.usuario.email

    def __unicode__(self):
        return self.nome
from django import forms
from django.contrib.auth.models import User

from datetimewidget.widgets import DateTimeWidget, DateWidget, TimeWidget
from clientes.models import Cliente


class RegistraClienteForm(forms.Form):

    SEXO_CHOICES = (
        (u'Masculino', u'Masculino'),
        (u'Feminino', u'Feminino'),
    )

    nome = forms.CharField(required=True)
    telefone = forms.CharField(required=True)
    cpf = forms.CharField(required=True)
    data_de_nascimento = forms.DateField(
        widget=DateWidget(usel10n=True, bootstrap_version=3)
    )
    sexo = forms.ChoiceField(required=True, choices=SEXO_CHOICES)

    username = forms.CharField(required=True)
    email = forms.EmailField(required=True)
    senha = forms.CharField(required=True)

    def is_valid(self):

        valid = True

        if not super(RegistraClienteForm, self).is_valid():
            self.adiciona_erro('Por favor, verifique os dados informados')
            valid = False
            return valid

        username_form_data = self.data['username']
        user_exists = User.objects.filter(username=username_form_data).exists()

        if user_exists:
            self.adiciona_erro('User already exists!')
            valid = False
            return valid

    def adiciona_erro(self, message):
        errors = self._errors.setdefault(
            forms.forms.NON_FIELD_ERRORS,
            forms.utils.ErrorList()
        )
        errors.append(message)
forms.py

from __future__ import unicode_literals

from django.db import models

from django.contrib.auth.models import User


class Cliente(models.Model):

    SEXO_CHOICES = (
        (u'Masculino', u'Masculino'),
        (u'Feminino', u'Feminino'),
    )

    nome = models.CharField(max_length=50, null=False, default='*')
    telefone = models.CharField(max_length=20, null=True)
    cpf = models.CharField(max_length=255, null=False)
    data_de_nascimento = models.DateField(null=False)
    sexo = models.CharField(max_length=9, null=False, choices=SEXO_CHOICES)
    usuario = models.OneToOneField(User, related_name="cliente")

    @property
    def email(self):
        return self.usuario.email

    def __unicode__(self):
        return self.nome
from django import forms
from django.contrib.auth.models import User

from datetimewidget.widgets import DateTimeWidget, DateWidget, TimeWidget
from clientes.models import Cliente


class RegistraClienteForm(forms.Form):

    SEXO_CHOICES = (
        (u'Masculino', u'Masculino'),
        (u'Feminino', u'Feminino'),
    )

    nome = forms.CharField(required=True)
    telefone = forms.CharField(required=True)
    cpf = forms.CharField(required=True)
    data_de_nascimento = forms.DateField(
        widget=DateWidget(usel10n=True, bootstrap_version=3)
    )
    sexo = forms.ChoiceField(required=True, choices=SEXO_CHOICES)

    username = forms.CharField(required=True)
    email = forms.EmailField(required=True)
    senha = forms.CharField(required=True)

    def is_valid(self):

        valid = True

        if not super(RegistraClienteForm, self).is_valid():
            self.adiciona_erro('Por favor, verifique os dados informados')
            valid = False
            return valid

        username_form_data = self.data['username']
        user_exists = User.objects.filter(username=username_form_data).exists()

        if user_exists:
            self.adiciona_erro('User already exists!')
            valid = False
            return valid

    def adiciona_erro(self, message):
        errors = self._errors.setdefault(
            forms.forms.NON_FIELD_ERRORS,
            forms.utils.ErrorList()
        )
        errors.append(message)
以及
register.html

{% extends "new_client_base.html" %}

{% block body %}

<form class="form-signin" action="{% url 'registrar' %}" method="post">
   {% csrf_token %}
   <h2 class="form-signin-heading">Crie seu usuário</h2>

   <label for="id_nome"> Nome: </label> <input name="nome" type="text" id="id_nome" class="form-control" placeholder="Nome *" required autofocus/>

   <label for="id_telefone">Telefone: </label> <input type="text" name="telefone" id="id_telefone" class="form-control" placeholder="Telefone *" required/>

   <label for="id_cpf"> CPF: </label> <input type="text" name="cpf" id="id_cpf" class="form-control" placeholder="CPF *" required/>

   <label for="id_data"> Data de Nascimento:</label> <input type="date" name="data_de_nascimento" id="id_data" class="form-control" required />

   <label for="id_sexo" class="required">
      Sexo:
   </label> <select id="id_sexo" name="sexo">
      <option selected="selected" value=""> ------- </option>
      <option value="Masculino"> Masculino </option>
      <option value="Feminino"> Feminino </option>
   </select>

   <label for="id_username"> Nome de usuário: </label> <input type="text" name="username" class="form-control" id="id_username" required/>

   <label for="id_email"> Email: </label> <input type="text" name="email" id="id_email" class="form-control" required />

   <label for="id_pass"> Senha: </label> <input type="password" name="senha" id="id_pass" class="form-control" required>

   <button
      type="submit"
      class="btn btn-lg btn-primary btn-block"
      value="login"
   >
      Registrar
   </button>

   {% if form.errors %}
   <div class="alert alert-danger">
      <button type="button" class="close" data-dismiss="alert" aria-hidden="true" name="button">&times;</button>
      {{form.non_field_errors}}

   </div>
   {% endif %}

</form>


{% endblock %}
{%extensed“new_client_base.html”%}
{%block body%}
{%csrf_令牌%}
克里埃苏·乌萨里奥
诺姆:
电话:
中央公积金:
纳西门托数据:
性别:
------- 
男性的
女性
努梅·德乌萨里奥:
电邮:
森哈:
登记员
{%if form.errors%}
&时代;
{{form.non_field_errors}}
{%endif%}
{%endblock%}
我想知道如何保存此数据,为什么
save()
方法不起作用,以及如何在DD-MM-YYYY中格式化日期并显示迷你日历


谢谢。

您不应该覆盖有效的。您应该在
clean
方法中处理所有验证逻辑;您的主要问题是您不能从ModelForm继承,但也不能重写
is\u valid()
,您应该定义
clean.*
方法。我不知道如何做。你有什么例子吗?谢谢