I'm trying to extend the User
model in Django using inheritance. Here's my model:
class Paciente (User):
Carteira = models.CharField(max_length=50,
verbose_name="Num Carteira Plano Saude",unique=True)
Convenio = models.ForeignKey(Operadora,'Descricao', related_name="convenio",
verbose_name="Convenio",unique=True)
DDD = models.CharField(max_length=2, verbose_name="DDD")
Telefone = models.CharField(max_length=10, verbose_name="Telefone")
And here's my view:
def paciente_register(request):
PacienteFormSet = modelformset_factory(Paciente)
if request.method == 'POST':
form = PacienteFormSet(request.POST or None,
request.FILES or None, queryset=Paciente.objects.none(),
initial=[{
'is_staff': False,
'is_active': True,
'is_superuser': False,
'date_joined': datetime.now(),
'last_login': datetime.now()
}]
) #incluir
if form.is_valid():
instance = form.save(commit=False) #pre-salva o registro
for logvalue in instance: # repoe os valores 'hidden' de log
logvalue.is_staff = False
logvalue.is_active = True
logvalue.is_superuser = False
logvalue.date_joined = datetime.now()
logvalue.last_login = datetime.now()
for reform in instance: # salva no banco
reform.save()
else:
return HttpResponseRedirect('/erro/')
else:
form = PacienteFormSet(queryset=Paciente.objects.none(),
initial=[{
'is_staff':False,
'is_active': True,
'is_superuser': False,
'date_joined': datetime.now(),
'last_login': datetime.now()
}]
) #incluir
return render_to_response('register.html', {'form': form,}, context_instance=RequestContext(request))
And, last but not least, my template:
<form enctype="multipart/form-data" method="POST" action="/paciente_register/" >{% csrf_token %}
{{ form.management_form }}
{% for formy in form.forms %}
{{ formy.username.label_tag}}:{{formy.username}}<br>
{{ formy.password.label_tag}}:{{formy.password}}<br>
{{ formy.Carteira.label_tag}}:{{formy.Carteira}}<br>
{{ formy.Convenio.label_tag}}:{{formy.Convenio}}<br>
{{ formy.DDD.label_tag}}:{{formy.DDD}}<br>
{{ formy.Telefone.label_tag}}:{{formy.Telefone}}<br>
{{formy.is_staff.as_hidden}}
{{formy.is_active.as_hidden}}
{{formy.is_superuser.as_hidden}}
{{formy.date_joined.as_hidden}}
{{formy.last_login.as_hidden}}
{% endfor %}
<input type="submit" name="submit" value="Salvar" />
</form>
The user is supposed to register himself, but he will only have access to edit some of the fields, because the others I am setting inside the view and in the template, I am hiding them.
But the thing is that my form is not validating. I did a lot of research, but just a few examples over the internet use inheritance to extend User
model. And this ones, does not show how would be the view that makes the registration of the user inside the application.
Any help would be very appreciated! :)