Form.is_valid всегда False. возможно, дело в ManyToManyField

Я работаю над своим первым проектом на Django. В проекте есть два приложения. Каждое приложение имеет одну модель.

Имеется модель Станция и модель Сотрудник. Сотрудники принадлежат нескольким станциям, поэтому существует отношение "многие-ко-многим" (поле ManyToManyField в модели Employee: "belong_to").

/LedgerEmployee/
    models.py <- Employee model
/LedgerStation/
    models.py <- Station model

Проблема

При размещении новой регистрационной формы LedgerEmployee валидация всегда ложная.

Дополнительная информация

Новая регистрационная форма LedgerEmployee работала нормально (True) до установки "believe_to". Я думаю, что это, вероятно, ошибка "многие ко многим". (Даже после установки я могу правильно зарегистрироваться на странице /admin, но я не хочу, чтобы другие люди помещали ее в /admin).

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

/LedgerEmployee/models.py

from django.db import models

# Create your models here.
from django.conf import settings
from LedgerStation.models import Station

class Employee(models.Model):
    name_1 = models.CharField('name_1', max_length=20)
    name_2 = models.CharField('name_2', max_length=20)
    tel1 = models.CharField('tel11', max_length=13)
    tel2 = models.CharField('tel22', max_length=13, default='', blank=True)
    postal_code = models.CharField('postal_code', max_length=8, default='', blank=True)
    address = models.TextField('address', default='', blank=True)
    email = models.CharField('email', max_length=30, default='', blank=True)
    nurse_licence_type = models.CharField('nurse_licence_type', max_length=4, \
        choices=settings.NURSE_LICENCE_TYPE, default='None')
    nurse_licence_num = models.CharField('nurse_licence_num', max_length=10, default='', blank=True)
    nurse_licence_date = models.CharField('nurse_licence_date', max_length=10, default='', blank=True)
    belong_to = models.ManyToManyField(Station, verbose_name='belong', blank=True)
    memo = models.TextField('memo', default='', blank=True)

    created_at = models.DateTimeField('created_at', auto_now_add=True, editable=True)
    created_by = models.CharField('created_by', max_length=20, default='', blank=True)
    updated_at = models.DateTimeField('updated_at', auto_now=True, editable=True)
    updated_by = models.CharField('updated_by', max_length=20, default='', blank=True)

    class Meta:
        db_table = 'T_Employees'

    def __str__(self):
        return f'{self.pk}{self.name_1}'

/LedgerEmployee/views.py

def le_new(request):  # for register
    form = EmployeeForm(request.POST)
    if form.is_valid():  # Always False.
        employee = form.save(commit=False)
        employee.created_by = str(request.user.last_name) + ' ' + str(request.user.first_name)
        employee.save()
        return redirect(le_detail, employee_id=employee.pk)
    else:
        context = {'form': form}
        return render(request, 'LedgerEmployee/le_new.html', context)  # Registoration page.

/LedgerEmployee/forms.py

from django import forms
from LedgerEmployee.models import Employee

class EmployeeForm(forms.ModelForm):
    class Meta:
        model = Employee
        # fields = ['name_1', 'name_2', 'tel1', 'tel2', 'postal_code', 'address', 'email', 'nurse_licence_type', 'nurse_licence_type', 'nurse_licence_num', 'nurse_licence_date', 'belong_to', 'memo',]  # I was tried, but not working.
        fields = '__all__'
        exclude = ('belong_to', 'created_at', 'created_by', 'updated_at', 'updated_by', )

/templates/LedgerEmployee/le_new.html <- страница регистрации

{% extends 'base.html' %}
{% block main %}
<form method='post mt-1'>
        {% csrf_token %}
        {{ form.as_p }}
        <button class='btn btn-primary' type='submit'>submit</button>
        <a class='btn btn-primary' href='{% url "le_top" %}'>return</a>
    </form>
{% endblock %}

/LedgerStation/models.py

from django.db import models

# Create your models here.
from django.conf import settings

class Station(models.Model):
    name_1 = models.CharField('name_1', max_length=50, default='')
    name_2 = models.CharField('name_2', max_length=50, default='')
    postal_code = models.CharField('postal_code', max_length=8)
    address = models.TextField('address')
    tel1 = models.CharField('tel1', max_length=13)
    tel2 = models.CharField('tel2', max_length=13, blank=True, default='')
    fax = models.CharField('Fax', max_length=13, blank=True, default='')
    memo = models.TextField('memo', default='', blank=True)

    created_at = models.DateTimeField('created_at', auto_now_add=True, editable=True)
    created_by = models.CharField('created_by', max_length=20, default='', blank=True)
    updated_at = models.DateTimeField('updated_at', auto_now=True, editable=True)
    updated_by = models.CharField('updated_by', max_length=20, default='', blank=True)

    class Meta:
        db_table = 'T_Stations'

    def __str__(self):
        return self.name_1

Дополнительно

(0.004) SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."expire_date" > '2021-10-08 13:54:47.332823' AND "django_session"."session_key" = 'guvgg58fs7b57ai9yik9t9moswbrldp9') LIMIT 21; args=('2021-10-08 13:54:47.332823', 'guvgg58fs7b57ai9yik9t9moswbrldp9')
(0.001) SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 1 LIMIT 21; args=(1,)

[08/Oct/2021 22:43:34] "GET /LedgerEmployee/new/?csrfmiddlewaretoken=I7fFEpDGYJ9c8fJl6Z5ezk2lGqWNCvSss0eJm4wEHjWkQDuw2pjjwAPpLPQufrKI&name_kanji=test1&name_kana=test2&tel1=test&tel2=&postal_code=&address=&email=&nurse_licence_type=%E3%81%AA%E3%81%97&nurse_licence_num=&nurse_licence_date=&memo= HTTP/1.1" 200 3733

Я считаю, что вам следует сделать print(form.errors), чтобы вы могли видеть ошибки, которые возникают.

В методе формы допущена ошибка. Вы пишете

<form method='post mt-1'> 

вместо

<form method="post" class="mt-1">

Здесь видно, что представление получает метод GET, а не POST

[08/Oct/2021 22:43:34] "GET /LedgerEmployee/new/?csrfmiddlewaretoken=I7fFEpDGYJ9c8fJl6Z5ezk2lGqWNCvSss0eJm4wEHjWkQDuw2pjjwAPpLPQufrKI&name_kanji=test1&name_kana=test2&tel1=test&tel2=&postal_code=&address=&email=&nurse_licence_type=%E3%81%AA%E3%81%97&nurse_licence_num=&nurse_licence_date=&memo= HTTP/1.1" 200 3733
Вернуться на верх