我试图通过形式发送数据到我的数据库作为我的任务模型的新对象。当我点击提交按钮时,它只会将我重定向到我的其他页面,提交的数据没有发生任何变化,数据也没有保存到我的数据库中。我在多个来源寻找解决方案,但没有找到一个。我是begginer与这个主题,所以每一个反馈将是伟大的。
我的问题:
1.我犯的错误
1.如果我在我的admin.py(从标题字段)中预先填充了slug字段,当我排除slug字段时,它会在表单中预先填充吗?
3.我会感谢有用的知识来源。
model.py
class Task(models.Model):
is_done = models.BooleanField(default=False)
title = models.CharField(max_length=100)
add_time = models.DateTimeField(auto_now_add=True)
deadline = models.DateTimeField()
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="user")
slug = models.SlugField()
description = models.TextField()
forms.py
from django import forms
from .models import Task
class TaskForm(forms.ModelForm):
class Meta:
model = Task
exclude = ["add_time", "is_done"]
模板
<form method="post" class="form" action="{% url 'add-task' %}">
{% csrf_token %}
<p>Title: {{ form.title }}</p>
<p>Deadline: {{ form.deadline }}</p>
<p>User: {{ form.user }}</p>
<p>Description: {{ form.description }}</p>
<button type="submit">Submit</button>
</form>
views.py
def add_task(request):
if request.method == 'POST':
form = TaskForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect("/todolist")
form = TaskForm()
return render(request, "todolist/add_task.html", {"form": form})
1条答案
按热度按时间m3eecexj1#
很可能表单是无效的,但是因为您构建了一个新的表单,所以即使表单是有效的,您也看不到错误。
在模板中,你应该呈现这个 with errors,所以:
然而,问题可能是您的
slug
包含在表单中,但您没有呈现它:from django import forms from .models import任务
注意:您可以使用
django-autoslug
[GitHub]自动创建基于其他字段的slug。注意:通常使用**
settings.AUTH_USER_MODEL
[Django-doc]引用用户模型比直接使用User
模型[Django-doc]更好。有关更多信息,您可以查看文档的 referencing theUser
model 部分。注意:虽然大多数表单不处理媒体文件,但最好还是将
request.FILES
**[Django-doc]传递给表单,这样,如果您稍后添加额外的媒体字段,所有使用表单的视图都会正确处理文件。