Hi everyone,
I am working on a small student application.
I designed a table for storing students' information in which those fields 
of information are requested at the first registration and those can be 
updated later or updated during the process. For example, a student's 
information can update in the process by putting on-hold (update the onhold 
field) in case that student has been absent for 3 weeks.
The attached file contains my code.
When I fill out the form and submit it, it opens a new form without safe my 
information.

I also try to create the form directly from the model and send it, but it 
still not working (saying that there is a mandatory field even when I 
filled all the fields)
###form.py
class StudentRegistrationForm(ModelForm):
    class Meta:
        model = Student
        fields = "__all__"
###view.py
def addStudent(request):
    form = StudentRegistrationForm()
    if request.method == "POST":
        form = StudentRegistrationForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('listStudents')
    return render(request, 
'students_management_app/student_template/addStudent.html', {'form': form})


Thank you for your support

Eric


-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/9c527bc5-bfc1-4f97-bb55-4e6c82350d80n%40googlegroups.com.
###Model.py

from django.db import models
from django.contrib import admin
from django.utils.translation import gettext_lazy as _


class Student(models.Model):
    #std_matricule = models.CharField(verbose_name='Student matricule', 
max_length=6, null=False, unique=True, primary_key=True)
    std_matricule = models.CharField(verbose_name='Matricule', max_length=6, 
null=False, unique=True, blank=False, help_text='Matricule of the student')
    std_parents = models.ForeignKey(Parents, on_delete=models.DO_NOTHING, 
related_name='Parents', unique=False, default=1, verbose_name='Student parents')
    std_email = models.EmailField(verbose_name='Email', null=False, blank=True, 
help_text='Enter the email of the student or leave blank if not exist')
    std_password = models.CharField(verbose_name='Password', max_length=64, 
null=False, blank=True, help_text='Type the password with 6 characters minimum')
    std_surname = models.CharField(verbose_name='Surname', null=False, 
blank=False, max_length=64, help_text='Type the Surname of the student as in 
the birth certificate')
    std_firstname = models.CharField(verbose_name='First name', null=False, 
blank=True, max_length=64, help_text='Type the student first name')
    std_nickname = models.CharField(verbose_name='Student Nickname', 
max_length=64, null=False, blank=True, help_text='If exist, type student 
nickname here')
    class Sex(models.TextChoices):
        MALE = 'Male', _('Male')
        FEMALE = 'Female', _('Female')
    std_sex = models.CharField(
        max_length=8,
        choices=Sex.choices,
        default=Sex.MALE,
        verbose_name='Sex',
        help_text='Select the sex from the dropdown list',
    )
    std_dateOfBirth = models.DateField(verbose_name='Date of birth', 
null=False, blank=False, help_text='Birth date of the student as in the birth 
certificate')
    std_placeOfBirth = models.CharField(verbose_name='Place of birth', 
max_length=64, null=False, blank=False, help_text='Place of birth of the 
student as in the birth certificate')
    std_countryOfBirth = models.CharField(verbose_name='Country of birth', 
max_length=64, null=True, blank=True, help_text='Country of birth of the 
student as in the birth certificate')
    std_nationality = models.CharField(verbose_name='Student nationality', 
max_length=64, null=True, blank=True, help_text='Nationality of the student')
    std_adress = models.CharField(verbose_name='Student adress', 
max_length=256, null=False, blank=True)
    std_phoneNumber = models.CharField(verbose_name='Student phone number', 
max_length=32, null=False, blank=True, help_text='Student phone number')
    std_enrolmentDate = models.DateField(verbose_name='Student enrolment date', 
null=False, blank=False, help_text='Enter the enrolment date')
    std_photo = models.ImageField(verbose_name='Student photo', null=False, 
help_text='Please, upload a recent photo of the student')
    std_birthCertificate = models.FileField('Student birth certificate scann', 
null=False, blank=True, help_text='Upload a readable scan copy of the birth 
certificate here')
    std_otherDocs = models.FileField('Student others documents', null=False, 
blank=True, help_text='If exist, upload those support documents')
    class STD_status(models.TextChoices):
        ACTIF = 'Active', _('Active')
        INACTIF = 'Inactive', _('Inactive')
        ONHOLD = 'Onhold', _('Onhold')
        COMPLETED_P ='Completed Primary', _('Completed Primary')
        COMPLETED_S ='Completed Secondary', _('Completed Secondary')
    std_status = models.CharField(
        max_length=32,
        choices=STD_status.choices,
        default=STD_status.ACTIF,
        verbose_name='Status',
        help_text='Student status, select from the dropdown list',
    )
    std_deleteStatus = models.BooleanField(verbose_name='Delete status', 
default=False)
    std_last_loginDate = models.DateField(verbose_name='Last login date', 
null=True, blank=True, help_text='Last login date')
    std_last_loginIP = models.CharField(verbose_name='Last login IP', 
max_length=64, null=True, blank=True, help_text='Last login IP')
    std_createDate = models.DateField(verbose_name='Create date', auto_now=True)
    std_modifyDate = models.DateField(verbose_name='Modify date', auto_now=True)

    def __str__(self):
        return 'Matricule: ' + self.std_matricule + ' - Full name: ' + 
self.std_surname + ' ' + self.std_firstname

###view.py


from django.shortcuts import render, redirect
from django.http import HttpResponse, Http404, HttpResponseRedirect, 
JsonResponse
from django.urls import reverse
from django.contrib import messages
from django.core.files.storage import FileSystemStorage
from django.views.decorators.csrf import csrf_exempt
from students_management_app.forms import StudentRegistrationForm
from students_management_app.models import Student

def addStudentSave(request):
    if request.method == "POST":
        form = StudentRegistrationForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('listStudents')
    return render(request, 
'students_management_app/student_template/addStudent.html', {'form': form})


def addStudentSave(request):
    if request.method != "POST":
        messages.error(request, "Invalid Method")
        return redirect('addStudent')
    else:
        print(request.POST)
        form = StudentRegistrationForm(request.POST, request.FILES)
        if form.is_valid():
            std_surname = form.cleaned_data['std_surname']
            std_firstname = form.cleaned_data['std_firstname']
            std_nickname = form.cleaned_data['std_nickname']
            std_matricule = form.cleaned_data['std_matricule']
            std_email = form.cleaned_data['std_email']
            std_sex = form.cleaned_data['std_sex'] 
            std_dateOfBirth = form.cleaned_data['std_dateOfBirth']
            std_placeOfBirth = form.cleaned_data['std_placeOfBirth']
            std_countryOfBirth = form.cleaned_data['std_countryOfBirth']
            std_nationality = form.cleaned_data['std_nationality']
            std_adress = form.cleaned_data['std_adress']
            std_phoneNumber = form.cleaned_data['std_phoneNumber']
            std_enrolmentDate = form.cleaned_data['std_enrolmentDate']

            if len(request.FILES) != 0:
                std_photo = request.FILES['std_photo']
                fs = FileSystemStorage()
                filename = fs.save(std_photo.name, std_photo)
                std_photo_url = fs.url(filename)
            else:
                std_photo = None

            try:
                student = Student.objects.create(std_surname=std_surname,
                                                                                
                        std_firstname=std_firstname,
                                                                                
                        std_nickname=std_nickname,
                                                                                
                        std_matricule=std_matricule,
                                                                                
                        std_email=std_email,
                                                    std_sex=std_sex,
                                                    
std_dateOfBirth=std_dateOfBirth,
                                                    
std_placeOfBirth=std_placeOfBirth,
                                                    
std_countryOfBirth=std_countryOfBirth,
                                                    
std_nationality=std_nationality,
                                                    std_adress=std_adress,
                                                    
std_phoneNumber=std_phoneNumber,
                                                    
std_enrolmentDate=std_enrolmentDate,
                                                                                
                        std_photo=std_photo_url)
                                
                student.save()
                messages.success(request, "Student Added Successfully!")
                return redirect('addStudent')
            except:
                messages.error(request, "Failed to Add Student!")
                return redirect('addStudent')
        else:
            return redirect('addStudent')


###form.py

from django import forms
from django.forms import ModelForm
from students_management_app.models import Student

class StudentRegistrationForm(forms.Form):    
    std_surname = forms.CharField(label='Surname', max_length=64, required=True)
    std_firstname = forms.CharField(label='First name',  max_length=64, 
required=True)
    std_nickname = forms.CharField(label='Student Nickname', max_length=64, 
required=True)
    std_matricule = forms.CharField(label='Matricule', max_length=6, 
required=True)
    ###std_parents = models.ForeignKey(Parents, on_delete=models.DO_NOTHING, 
related_name='Parents', unique=False, default=1, verbose_name='Student parents')
    std_email = forms.EmailField(label='Email')
    gender_list = (
                ('Male','Male'),
                ('Female','Female')
        )
    std_sex = forms.ChoiceField(label='Sex', choices=gender_list)    
    std_dateOfBirth = forms.DateField(label='Date of birth', 
widget=forms.DateInput(format='%d/%m/%Y'))
    std_placeOfBirth = forms.CharField(label='Place of birth', max_length=64)
    std_countryOfBirth = forms.CharField(label='Country of birth', 
max_length=64)
    std_nationality = forms.CharField(label='Nationality', max_length=64)
    std_adress = forms.CharField(label='Adress', max_length=256)
    std_phoneNumber = forms.CharField(label='Phone number', max_length=32)
    std_enrolmentDate = forms.DateField(label='Enrolment date', 
widget=forms.DateInput(format='%d/%m/%Y') )
    std_photo = forms.ImageField(label='Student photo')
    std_birthCertificate = forms.FileField(label='Scan of the Birth 
certificate')
    std_otherDocs = forms.FileField(label='Student others documents')


###html template

 {% load static %}
    <title>List of the students</title>
</head>
    <body>
        <h1>Add a Student:</h1>
        <form action="" method="POST">
            {%  csrf_token %}
            {{ form.as_p }}
            <input type="submit" value="Save">
        </form>
    </body>
</html>


Reply via email to