我正在尝试User
使用继承扩展 Django 中的模型。这是我的模型:
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")
这是我的观点:
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))
最后但并非最不重要的是,我的模板:
<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>
用户应该注册自己,但他只能编辑一些字段,因为我在视图和模板中设置的其他字段,我隐藏了它们。
但问题是我的表格没有验证。我做了很多研究,但互联网上只有几个例子使用继承来扩展User
模型。而这并没有显示在应用程序中进行用户注册的视图。
任何帮助将不胜感激!:)