Post data into database failed with form invalid message
#I can not send data to my db, please help me to check.#
Here is the model
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
Here is the form
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."),
},
}
Here is the views
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 file :
<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>
Here are the errors msg get on Terminal:
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
Please help to fix. I don"t need dates fields and user create and change fields appear
I believe that your form isn't saving because you're not properly creating the model instance.
Try something like this:
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})
Use form.save(commit=False)
to get an unsaved instance, then set hidden fields before the final save.
@Mahrez, it seems the same error so nothing changed. I test the code and the problem is that the form is not valid. Your answer is when the form is valid before to apply the save code. please, could you check again or anyone can help me, please.
def Insert_group(request):
print(f" The begining Request method is : {request.method}")
sEtat = "crea"
data = {
"created_at": datetime.today(),
"updated_at": datetime.today(),
"UTIL_CREATION": settings.WCURUSER,
"UTIL_MODIF": settings.WCURUSER,
"Soc_sigle": settings.WSOCGEN,
}
if request.method == 'POST':
print('Yes i am in POST method')
LibELE_GROUPE = request.POST.get("LibELE_GROUPE")
form = f_groupe_userForm(request.POST)
print(request.method)
if form.has_changed():
print("The following fields changed: %s" % ", ".join(form.changed_data))
if form.is_valid():
groupe = form.save(commit=False)
groupe.updated_at = datetime.today()
groupe.created_at = datetime.today()
groupe.UTIL_CREATION = settings.WCURUSER
groupe.UTIL_MODIF = settings.WCURUSER
groupe.Soc_sigle = settings.WSOCGEN
if LibELE_GROUPE is not None:
print(f"LibELE_GROUPE value is : {LibELE_GROUPE}")
if 'Ajouter' in request.POST:
print('Yes we can insert now')
groupe.save()
print('insert successful!!!')
return HttpResponseRedirect("CreateGroup/success")
else:
return HttpResponseRedirect("CreateGroup")
else:
# In reality we'd use a form class
# to get proper validation errors.
return HttpResponse("fields libelle is empty!")
# "Make sure all fields are entered and valid.")
## Process the form data
# pass
# return redirect('success')
else:
#print('form pas valide')
print("The following fields are not valid : %s" % ", ".join(form.errors.as_data()))
return render(request, 'appMenuAdministrator/L_liste_GroupeUtilisateur/FicheCreaGroupe1.html', {'form': form})
else:
form = f_groupe_userForm()
data = data
# print(f"La valeur de libellé est : {LibELE_GROUPE}")
return render(request, 'appMenuAdministrator/L_liste_GroupeUtilisateur/FicheCreaGroupe1.html', {'form': form, 'sEtat': sEtat, 'data': data})
15/May/2025 15:19:43] "GET /static/css/all.min.css HTTP/1.1" 404 1985
The begining Request method is : GET
[15/May/2025 15:19:45] "GET /AccessAdmin/Insert_group HTTP/1.1" 200 11230
[15/May/2025 15:19:45] "GET /static/css/all.min.css HTTP/1.1" 404 1985
The begining Request method is : POST
Yes i am in POST method
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 15:19:55] "POST /AccessAdmin/Insert_group HTTP/1.1" 200 11181
[15/May/2025 15:19:55] "GET /static/css/all.min.css HTTP/1.1" 404 1985