Django无法将新实例保存到模型中

时间:2019-01-29 17:53:53

标签: django django-models django-forms

我无法将从表单获取的数据保存到数据库。该表格显示正确,看来我可以提交。每当我重定向到“ project_list.html”时,都看不到新项目。

我还检查了管理站点是否将新实例保存到模型中,但是我的代码似乎有问题。

这是我的文件:

model.py

class Project(models.Model):
    project_id = models.CharField(max_length=30)
    project_name = models.CharField(max_length=100)

view.py

def projects_list(request):
    projects = Project.objects.all()
    table = ProjectTable(Project.objects.all())
    RequestConfig(request, paginate={'per_page':25}).configure(table)
    return render(request, 'portal/project/list.html', {'projects': 
    projects, 'table': table})


 def project_add(request):
    if request.method == 'POST':
        form = ProjectAddForm(request.POST)
        if form.is_valid():
           form.save()
           return redirect('project_list',)
    else:
        form = ProjectAddForm()
    return render(request, 'portal/project/add.html', {'form': form})

forms.py

from django import forms
from .models import Project

class ProjectAddForm(forms.ModelForm):
    class Meta:
        model = Project
        fields = ['project_id', 'project_name',]

add.html

{% extends 'portal/base.html' %}

{% block title %}Add Project{% endblock title %}

{% block content %}

<div class="col-sm-10 offset-sm-1 text-center">
    <form action="{% url 'portal:projects_list' %}" method="POST">
        {% csrf_token %}
        {{ form.as_p }}
        <input type="submit" value="Submit">
    </form>        
</div>

{% endblock content %}

projects_list.html

{% extends 'portal/base.html' %}
{% load render_table from django_tables2 %}


{% block content %}
    <h1>Projects List</h1>

    {% render_table table %}

{% endblock content %}

urls.py

from django.urls import path
from . import views

app_name = 'portal'

urlpatterns = [
   path('', views.homepage, name='homepage'),
   path('password_generator/', views.password_generator, 
         name='password_generator'), 
   path('projects_list/', views.projects_list, name='projects_list'),
   path('project/<str:project_id>/', views.project_detail, 
         name='project_detail'),
   path('add/', views.project_add, name='project_add'),
]

1 个答案:

答案 0 :(得分:0)

我在代码中找到了问题。在我的project_add视图中,我试图重定向到“ project_list” URL,但它不存在。那是错误的......