我是Django的初学者,正在尝试构建待办事项列表应用。我正在创建一个ModelForm,它在应用程序中添加了新任务。但是,在尝试保存数据时,没有任何反应。没有数据被保存,没有错误显示。
models.py:
class Task(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=50)
description = models.TextField(blank=True, null=True)
start_date = models.DateTimeField()
end_date = models.DateTimeField()
priority = models.BooleanField(default=True)
completed = models.BooleanField(default=False)
def __str__(self):
return self.title
ModelForm:
class TaskForm(forms.ModelForm):
class Meta:
model = Task
fields = ('title', 'description', 'start_date', 'end_date', 'priority')
views.py:
def task(request):
task = Task.objects.filter(user=request.user, completed=False)
queryset = task.order_by('-start_date')
form = TaskForm(request.POST or None)
if request.method == 'POST':
if form.is_valid():
form.instance.user = request.user
form.save()
redirect('task:task-list')
else:
print('error')
context = {
'task': queryset,
'form': form,
}
return render(request, 'task-list.html', context)
模板:
<form action="." method="POST">
{% csrf_token %}
{{ form }}
<button type="submit">Add task</button>
</form>
任何帮助将不胜感激!
答案 0 :(得分:1)
您尝试过变得更明确吗?
def task(request):
task = Task.objects.filter(user=request.user, completed=False)
queryset = task.order_by('-start_date')
if request.method == 'POST':
form = TaskForm(request.POST)
if form.is_valid():
form.instance.user = request.user
form.save()
return redirect('task:task-list')
else:
form = TaskForm()
context = {
'task': queryset,
'form': form,
}
return render(request, 'task-list.html', context)
<form action="{% url 'task-list' %}" method="POST">
{% csrf_token %}
{{ form }}
<button type="submit">Add task</button>
</form>