ModelForm не сохраняет никаких данных - PullRequest
0 голосов
/ 05 марта 2020

Я новичок 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 Ответ

1 голос
/ 05 марта 2020

Вы пытались быть более откровенным?

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>
...