Не удалось отправить данные в базу данных с сообщением о недопустимости формы

#Я не могу отправить данные в свою базу данных, пожалуйста, помогите мне проверить.#

Вот модель

Model:
class f_groupe_user(models.Model):
    IDF_GROUPE_USER=models.AutoField(primary_key=True)
    LibELE_GROUPE= models.CharField(max_length=120)
    Soc_sigle = models.CharField(max_length=120)
    created_at=models.DateTimeField(auto_now_add=True)
    updated_at= models.DateTimeField(auto_now=True)
    UTIL_CREATION= models.CharField(max_length=120)
    UTIL_MODIF= models.CharField(max_length=120)

    def __str__(self):
        return self.LibELE_GROUPE

Вот форма

class f_groupe_userForm(forms.ModelForm):
    class Meta:
        def __init__(self, *args, **kwargs):
            super(f_groupe_userForm, self).__init__(*args, **kwargs)
        model = f_groupe_user
        fields = ['LibELE_GROUPE', 'UTIL_CREATION', 'UTIL_MODIF','Soc_sigle']
        labels = {'LibELE_GROUPE': 'Nom*', 'created_at': 'Date de création',  'updated_at': 'Date de modification', 'UTIL_CREATION': 'UTIL CREATION', 'UTIL_MODIF': 'UTIL MODIF', 'Soc_sigle':',Societe'}
       
        widgets={
            'name'           : forms.TextInput(attrs={'class':'form-control'}),
        }
        help_texts = {
            "LibELE_GROUPE": _("Donner le nom du groupe utilisateur"),
        }
        error_messages = {
            "name": {
                "max_length": _("Ce nom du groupe est trop long."),
            },
        }

Вот виды

def Insert_group(request):
    print(f" La Request method est : {request.method}")
    sEtat = "crea"
    if request.method == 'POST':
        print('Je rentre dans group Insert_group avec POST'))
        form = f_groupe_userForm()
        form.LibELE_GROUPE = request.POST.get("LibELE_GROUPE")
        form.updated_at = timezone.now()
        form.created_at = timezone.now()
        form.UTIL_CREATION = settings.WCURUSER
        form.UTIL_MODIF = settings.WCURUSER
        form.Soc_sigle = settings.WSOCGEN
   
        data = {
           
            "UTIL_CREATION": settings.WCURUSER,
            "UTIL_MODIF": settings.WCURUSER,
            "Soc_sigle" : settings.WSOCGEN,
        }

        print(f" La valeur de data est : {data}")

        form = f_groupe_userForm(request.POST, initial=data)
        print(request.method)
        if form.has_changed():
            print("The following fields changed: %s" % ", ".join(form.changed_data))

        if form.is_valid():
            LibELE_GROUPE = form.cleaned_data['LibELE_GROUPE']
            created_at = form.cleaned_data[
                'created_at'] 
            updated_at = form.cleaned_data['updated_at']
            UTIL_CREATION = form.cleaned_data['UTIL_CREATION']
            UTIL_MODIF = form.cleaned_data['UTIL_MODIF']
            Soc_sigle = form.cleaned_data['Soc_sigle']
            print(f"La valeur des donnée du formulaire sont: {form.cleaned_data}")

            if LibELE_GROUPE is not None:
 
                if 'Ajouter' in request.POST:
                    print('Oui on peut ajouter')
                    f_groupe_user.save()
                    print('ajout effectué!!!')
                    return HttpResponseRedirect("CreateGroup/success")
                else:
                    return HttpResponseRedirect("CreateGroup")

            else:
                return HttpResponse("Vous devriez vous assurer que tous les champs sont renseignés et validés!")

        else:
            print('form pas valide')
            return render(request, 'appMenuAdministrator/L_liste_GroupeUtilisateur/FicheCreaGroupe.html', {'form': form})
    else:
        form = f_groupe_userForm()
        return render(request, 'appMenuAdministrator/L_liste_GroupeUtilisateur/FicheCreaGroupe.html', {'form': form, 'sEtat': sEtat})

html-файл :

            <div class="card card-body" >
                <h5>Informationsx</h5>
                <hr>
                <p>Nom:</p>
                <fieldset>
                    <input name="LibELE_GROUPE" type="text" id="LibELE_GROUPE"  size="35"
                               placeholder="Nom du groupe" tabindex="1" >*
                </fieldset>

                <fieldset>
                    <input name="created_at" type="date" id="created_at" value="{{created_at}}" size="35" placeholder=""
                           tabindex="2" style="display:None;">
                </fieldset>
                <fieldset>
                    <input name="updated_at" type="date" id="updated_at" value="{{updated_at}}" size="35" placeholder=""
                           tabindex="3" style="display:None;">
                </fieldset>

                <fieldset>
                    <input name="UTIL_CREATION" type="text" id="UTIL_CREATION" value="{{UTIL_CREATION}}" size="35"
                           placeholder="" tabindex="4" style="display:None;>
                </fieldset>
                <fieldset>
                    <input name="UTIL_MODIF" type="text" id="UTIL_MODIF" value="{{UTIL_MODIF}}" size="35" placeholder=""
                           tabindex="5" style="display:None;">
                </fieldset>
                <fieldset>
                    <input name="Soc_sigle" type="text" id="Soc_sigle" value="{{Soc_sigle}}" size="35" placeholder=""
                           tabindex="6" style="display:None;">
                </fieldset>

            </div>

        </div>

Вот сообщения об ошибках, которые выводятся на терминал:

La Request method est : POST
Je rentre dans group Insert_group avec POST
 La valeur de data est : {'created_at': datetime.datetime(2025, 5, 15, 11, 42, 53, 871867), 'updated_at': datetime.datetime(2025, 5, 15, 11, 42, 53, 871867), 'UTIL_CREATION': 'admin', 'UTIL_MODIF': 'admin', 'Soc_sigle': 'ABI'}
POST
The following fields changed: LibELE_GROUPE
The following fields are not valid : UTIL_CREATION, UTIL_MODIF, Soc_sigle, created_at, updated_at
[15/May/2025 11:42:53] "POST /AccessAdmin/Insert_group HTTP/1.1" 200 11181
[15/May/2025 11:42:53] "GET /static/css/all.min.css HTTP/1.1" 404 1985

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

Я полагаю, что ваша форма не сохраняется, потому что вы неправильно создаете экземпляр модели.

Попробуйте что-нибудь вроде этого:

def Insert_group(request):
    if request.method == 'POST':
        form = f_groupe_userForm(request.POST)
        if form.is_valid():
            group = form.save(commit=False)
            group.UTIL_CREATION = settings.WCURUSER
            group.UTIL_MODIF = settings.WCURUSER
            group.Soc_sigle = settings.WSOCGEN
            group.save()
            return redirect('success_url')
    else:
        form = f_groupe_userForm()
    return render(request, 'template.html', {'form': form})

Используйте form.save(commit=False), чтобы получить несохраненный экземпляр, затем установите скрытые поля перед окончательным сохранением.

@Mahrez, похоже, та же ошибка, поэтому ничего не изменилось. Я тестирую код, и проблема в том, что форма недействительна. Ваш ответ - когда форма будет действительна, прежде чем применять код сохранения. пожалуйста, не могли бы вы проверить еще раз или кто-нибудь может мне помочь, пожалуйста.

Похоже, что ваша форма неправильная, def __init__ должно быть за пределами блока meta class.
Попробуйте это:

class f_groupe_userForm(forms.ModelForm):
    class Meta:
        model = f_groupe_user
        fields = ['LibELE_GROUPE', 'UTIL_CREATION', 'UTIL_MODIF','Soc_sigle', 'created_at', 'updated_at']
        labels = {'LibELE_GROUPE': 'Nom*', 'created_at': 'Date de création',  'updated_at': 'Date de modification', 'UTIL_CREATION': 'UTIL CREATION', 'UTIL_MODIF': 'UTIL MODIF', 'Soc_sigle':'Societe'}

    def __init__(self, *args, **kwargs):
        super(f_groupe_userForm, self).__init__(*args, **kwargs)
        self.initial['UTIL_CREATION'] = settings.WCURUSER
        self.initial['UTIL_MODIF'] = settings.WCURUSER
        self.initial['Soc_sigle'] = settings.WSOCGEN
        self.initial['created_at'] = timezone.now()
        self.initial['updated_at'] = timezone.now()
The issue is that you're including fields in your form and HTML (`created_at`, `updated_at`, UTIL_CREATION`, `UTIL_MODIF`, `Soc_sigle`) 
that should not be user-editable. These fields are meant to be set automatically in the backend.  

1. *Update your `f_groupe_userForm` to only include fields that should be edited by the user:**

  class f_groupe_userForm(forms.ModelForm):
    class Meta: 
       model = f_groupe_user
      fields = ['LibELE_GROUPE']

Обновите свое представление, чтобы корректно обрабатывать поля, не относящиеся к форме

def Insert_group(request):
    if request.method == 'POST':
        form = f_groupe_userForm(request.POST)
        if form.is_valid():
            group = form.save(commit=False)
            group.UTIL_CREATION = settings.WCURUSER
            group.UTIL_MODIF = settings.WCURUSER
            group.Soc_sigle = settings.WSOCGEN
            group.save()
            return HttpResponseRedirect("CreateGroup/success")
    else:
        form = f_groupe_userForm()
    return render(request, 'appMenuAdministrator/L_liste_GroupeUtilisateur/FicheCreaGroupe.html', {'form': form})
Вернуться на верх