ModelForm不保存任何数据

时间:2020-03-05 16:56:32

标签: django django-models django-forms

我是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>

任何帮助将不胜感激!

1 个答案:

答案 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>
相关问题