Форма модели не может быть проверена и опубликована - PullRequest
0 голосов
/ 15 июня 2019

Проблемы с проверкой и отправкой первой формы.Вторая форма, form2 работает нормально.Код представления такой же структуры, что и любопытно, что и вызывает проблему.

.is_valid () по умолчанию должен проверять поля.Что мне не хватает?


# views.py

def create(request):

    if request.method == 'POST':
        form = CreateForm(request.POST)
        form2 = CreateTimeForm(request.POST)

        if form.is_valid():
            form.save()
            return redirect('organizer-create')

        if form2.is_valid():
            form2.save()
            return redirect('organizer-create')

    else:
        form = CreateForm()
        form2 = CreateTimeForm()

    context = {
        'form': form,
        'form2': form2,
    }

    return render(request, 'organizer/create.html', context)


# forms.py

class CreateForm(ModelForm):

    class Meta:
        model = Event
        fields = ['title', 'date',]


# models.py

class Event(models.Model):
    title = models.CharField(max_length=50)
    date = models.DateField()
    datetimecreated = models.DateTimeField(auto_now_add=True)

    def get_absolute_url(self):
        return reverse('organizer-admin')

    def __str__(self):
        return str(self.date) + ", " + self.title

Редактировать 2: Ниже мой шаблон.Может ли проблема с базой данных привести к тому, что данные не будут опубликованы?Как бы я с этим справился?

# create.html template


{% block content %}
<form method="POST">
    {% csrf_token %}
    <fieldset class="form-group">
    <legend class="border-bottom mb-4">Event Creation</legend>
    {{ form.as_p }}
    </fieldset>
    <div class="form-group">
    <button class="btn btn-outline-info" type="submit">Create</button>
    </div>
</form>
<form method="POST">
    {% csrf_token %}
    <fieldset class="form-group">
    <legend class="border-bottom mb-4">Add New Time Block</legend>
    {{ form2.as_p }}
    </fieldset>
    <div class="form-group">
    <button class="btn btn-outline-info" type="submit">Create</button>
    </div>
</form>
{% endblock content %}

1 Ответ

1 голос
/ 15 июня 2019

Измените ваш файл views.py, как показано ниже:

def create(request):

if request.method == 'POST':
    form = CreateForm(request.POST)
    form2 = CreateTimeForm(request.POST)

    if form.is_valid() and form2.is_valid:
        form.save()
        form2.save()
        return redirect('organizer-create')

else:
    form = CreateForm()
    form2 = CreateTimeForm()

context = {
    'form': form,
    'form2': form2,
}

return render(request, 'organizer/create.html', context)

Теперь проблема в том, когда компилятор скомпилирует ваш первый оператор if:

if form.is_valid():
        form.save()
        return redirect('organizer-create')

будет выглядеть иПодумай, да, это правильно, и выполни свое заявление ifИ тогда он перенаправит «организатор-создать» УСПЕШНО.То есть:

return redirect('organizer-create')

, но не переносите следующий оператор if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...