Получение "| as_crispy_field передано недопустимое или несуществующее поле" с полем, которое существует - PullRequest
0 голосов
/ 14 июля 2020

Я использую django -crispy-forms, и столкнулся с проблемой, когда одно из моих полей формы не отображается. Ошибка, которую я получаю, говорит мне, что поле формы либо не существует, либо недействительно, но оно определенно существует и в значительной степени скопировано из других полей формы, которые правильно работают на других страницах. Так что я не совсем понимаю, как это бывает.

Вот соответствующий код:

forms.py

class AddSkillsForm:
    all_skills = forms.CharField(
        label="Skills ",
        widget=forms.HiddenInput(),
        required=False
    )

вид. html

{% extends 'base.html' %}
{% load crispy_forms_tags %}

{% block title %}{{ course.name }}{% endblock %}

{% block content %}

{% include 'course/partial/nav.html' with course=course active_breadcrumb=None %}

<div class="card">
    <div class="card-header">
        {% include 'course/partial/menu.html' with course=course %}
    </div>
    <div class="card-body">
        <dl class="row">
            <dt class="col-sm-3">Name:</dt>
            <dd class="col-sm-9">{{ course.name }}</dd>
            <dt class="col-sm-3">Number of Students:</dt>
            <dd class="col-sm-9">{{ total_students }}</dd>
            <dt class="col-sm-3">Sections:</dt>
            <dd class="col-sm-9">
                {% for section in sections %}
                <p>{{ section.name }}</p>
                {% endfor %}
            </dd>
        </dl>
    </div>
    <div class="card-body">
        <p>First, you'll need to import any existing students and groups from Canvas</p>
        <a class="btn btn-primary" href="{% url 'import_students_and_groups' course.id%}">
            Import Students and Groups from Canvas
        </a>

        <div id="skill_box">
            <p>If you would like to use self-reported student skills to form teams, you can define the skills relevant to this course here</p>
            <div id="skill_container"></div>
            <button type="button" class="btn btn-primary">Add Skill</button>
            <form method="post">
                {% csrf_token %}
                {{ form.all_skills|as_crispy_field }}
                <button type="submit" class="btn btn-primary"></button>
            </form>
        </div>

    </div>
</div>

{% endblock %}

1 Ответ

0 голосов
/ 14 июля 2020

В случае, если кто-то столкнется с той же проблемой, я нашел решение.

В forms.py каждая форма должна принимать forms.Form в качестве параметра, чтобы правильно работать с django-crispy-forms. У меня была другая форма, к которой я не обращался регулярно, и которая тоже этого не делала, поэтому я не понимал, что это делают все функциональные формы. Вот исправленный код

forms.py

class AddSkillsForm:
    all_skills = forms.CharField(
        label="Skills ",
        widget=forms.HiddenInput(),
        required=False
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...