我的表单是隐藏的,它只显示提交按钮,当我点击它时,表单会显示。
Crear Tarea= 创建任务。
它基本上是创建任务的 crud。
以下是我的观点:
class Crear_Tarea(View):
def get(self, request,*args,**kwargs):
context = {
'form': TareaForm()
}
return render(request, "crear_tarea.html", context)
def post(self, request,*args,**kwargs):
context = {
'form': TareaForm()
}
formulario = TareaForm(request.POST or None)
if formulario.is_valid():
formulario.save()
messages.success(request, 'Tablero seleccionado con éxito!')
context['crear_tarea']= formulario
return render(request, "crear_tarea.html", context)
我的表格:
class TareaForm(forms.ModelForm):
class Meta:
model = Tarea
fields = ('nombre','descripcion','fecha_creacion','fecha_termino','user', 'id_columna'
,'id_tipo','detalle','id_documento','estado','estado_avance','posicion')
def save(self, commit=True):
user = super().save(commit=False)
user.id = self.cleaned_data['user']
if commit:
user.save()
return user
和我的 Models.py
class Tarea(models.Model):
id_tarea = models.AutoField(primary_key=True)
nombre = models.CharField(max_length=99)
descripcion = models.CharField(max_length=99)
fecha_creacion = models.DateTimeField(null=True, blank=True)
fecha_termino = models.DateTimeField(null=True, blank=True)
user = models.ForeignKey(Usuario, on_delete=models.CASCADE)
id_columna = models.ForeignKey('Columna', on_delete=models.CASCADE)
id_tipo = models.ForeignKey('Tarea_tipo', on_delete=models.CASCADE)
detalle = models.CharField(max_length=255)
id_documento = models.ForeignKey('Documento', on_delete=models.CASCADE)
estado = models.IntegerField(blank=True, null=True)
estado_avance = models.IntegerField(blank=True, null=True)
posicion = models.IntegerField(blank=False, null=False)
def __str__(self):
return self.nombre
crear_tarea.html
{% extends "base.html" %}
{% load static %}
<!doctype html>
<html lang="en">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>{% block title %}Crear Tarea Ari-J{% endblock %}</title>
{% block content %}
<div class="container-fluid">
<div class="row mt-5">
<div class="col-12 my-5">
<h1 style="font-size: 42;">Crear Tarea</h1>
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li {% if message.tags %} class=" {{ message.tags }} " {% endif %}> {{ message }} </li>
{% endfor %}
</ul>
{% endif %}
<form action="" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<table class="table table-bordered table-striped text-center">
{{ crear_tarea.as_table }}
</table>
<button type="submit" class="btn btn-primary" name='crear_tarea'>Crear Tarea</button>
</form>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
</html>
它只有在我把所有东西都用到 GET 方法时才有效,但是当我使用 get 时,我无法在数据库中添加新任务。
答案 0 :(得分:1)
将您的 post
方法更改为:
def post(self, request,*args,**kwargs):
formulario = TareaForm(request.POST or None)
if formulario.is_valid():
formulario.save()
messages.success(request, 'Tablero seleccionado con éxito!')
context = {
'form': formulario
}
return render(request, "crear_tarea.html", context)
然后更新您的模板以使用 {{ form.as_table }}
代替 {{ crear_tarea.as_table }}
。