【发布时间】:2018-03-17 02:29:27
【问题描述】:
我有一个名为“Person”的类,其中包含 4 个字段:姓名、电话、文档、照片。在第一个屏幕中,我有 2 个字段:“姓名”和“电话”。在第二个中,我有 1 个字段:“文档”。在第三个中,我有 1 个字段:“照片”。我已经在数据库(表“人”)中保存了“姓名”和“电话”字段。我不知道如何将其他字段“文档”和“照片”保存在同一张表“人员”中。
urls.py:
urlpatterns = [
url(r'^$', views.id15_home, name='id15_home'),
url(r'^create/$', views.id15_create, name='id15_create'),
url(r'^(?P<id>\d+)/document/$', views.id15_document, name='id15_document'),
url(r'^(?P<id>\d+)/photo/$', views.id15_photo, name='id15_photo'),
Views.py:
def id15_home(request):
return (render(request, "id15/id-15.html"))
def id15_create(request):
form = id15Form(request.POST or None, request.FILES or None) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
instance = form.save(commit=False)
instance.save() # associa o models com o forms
messages.success(request, "CADASTRADO COM SUCESSO")
return HttpResponseRedirect(instance.get_absolute_url())
else:
messages.error(request, "NÃO CADASTRADO")
context = {"form": form}
return render(request, 'id15/cadastro.html', context)
def id15_document(request, id=None):
instance = get_object_or_404(pessoafisica, id=id)
form = id15Form(request.POST or None, request.FILES or None, instance=instance)
if form.is_valid():
instance = form.save(commit=False)
instance.save()
messages.success(request, "SUCESS")
return HttpResponseRedirect(instance.get_absolute_url())
context = {
"title": instance.id,
"instance": instance,
"form": form,
}
return render(request, 'id15/documento.html', context)
models.py:
class pessoafisica(models.Model):
name = models.CharField('Nome', max_length=100, default='', blank=False)
telephone= models.CharField('Telefone', max_length=10, default='', blank=False)
document = models.FileField(null=True, default='', blank=True)
photo = models.FileField(null=True, default='', blank=True)
# ----- Tratar url quando passa o "id" de uma tela para outra ----- #
def get_absolute_url(self):
return reverse("id15_documento", kwargs={"id": self.id})
return "/id15/%s" %(self.id)
forms.py:
class id15Form(forms.ModelForm):
name = forms.CharField(required=True)
telephone = forms.CharField(required=True)
class Meta:
model = pessoafisica
fields = ('name',
'telephone')
id-15.html
<h1> hellow</h1>
<a href= '{% url "id15_create" %}'>
<p><button>Criar minha ID 15</button></p>
</a>
地籍.html
<form class=" bd-form-3 " action="" name="form-name" method="post" enctype="multipart/form-data">
<script>
function caps(element){
element.value = element.value.toUpperCase();
}
</script>
<input type="text" name='name' id="name" class="bd-form-input" onkeyup="caps(this)">
{{form.name.errors}}
<input type="text" name='telephone' id="telephone" class="bd-form-input" onkeyup="caps(this)">
{{form.telephone.errors}}
文档.html
<html>
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
<head>`enter code here`
<meta charset="UTF-8">
<title>documento</title>
</head>
<body>
<h1>teste de documento</h1>
<label>Upload do documento</label></br>
<input type="file" name='docment.url' id="document" ></br></br>
{{form.document.error}}
<button class="btn btn-lg btn-primary btn-block" type = "submit" >
Cadastrar </button>
</body>
</form>
</html>
【问题讨论】:
-
您需要给我们一个最小的代码示例,并解释您研究/尝试/不理解的内容,以便在这里得到一个好的答案。但简短的版本是您需要以某种方式持久化用户。例如: (1) 将第一个屏幕中的 ID 传递到第二个屏幕(例如,作为隐藏的表单字段),以便您知道要更新哪一行。 (2) 添加将会话映射到用户 ID 的方法;第一个屏幕可以使用部分创建的用户的 ID 注册当前会话,然后第二个屏幕可以查找会话的 ID。以此类推。
-
所以,我已经将第一个屏幕的 ID 传递到了第二个屏幕。还行吧。现在,在第二个中,我需要上传一个文档并保存在同一记录中。
-
不要尝试在 cmets 中发布代码;它的用户界面很糟糕,而且结果无论如何都是不可读的。更重要的是,您的问题应该包含回答问题所需的所有信息,而无需阅读 cmets。因此,您要么需要编辑问题,要么创建一个新问题。通常是前者,但在这种情况下,我认为你有一个全新的问题,所以创建一个新问题。并确保这次包含minimal, complete, verifiable example。