models.py
class Position(models.Model):
    title = models.CharField(max_length=50)

    def __str__(self):
        return self.title

class Department(models.Model):
    title = models.CharField(max_length=50)

    def __str__(self):
        return self.title


class Employee(models.Model):
    fullname = models.CharField(max_length=100)
    emp_code = models.CharField(max_length=6)
    mobile= models.CharField(max_length=11)
    email = models.EmailField(max_length=25)
    position= models.ForeignKey(Position,on_delete=models.CASCADE)
    Department = models.ForeignKey(Department, on_delete=models.CASCADE)
    password_first = models.CharField(max_length=25)
    password_again = models.CharField(max_length=25)
    
    def __str__ (self):
        return self.fullname

forms.py
User = get_user_model()

class EmployeeForm(forms.ModelForm):

    class Meta:
        model = Employee
        fields = ('fullname','mobile','emp_code','position', 'Department',
'email', 'password_first', 'password_again')
        labels = {
            'fullname':'Full Name',
            'emp_code':'Employee Code',
            'password_first': 'Password',
            'password_again': 'Confirm Password',
        }

        widgets = {
            'password_first': forms.PasswordInput(),
            'password_again' : forms.PasswordInput(),
        }


    def __init__(self, *args, **kwargs):
        super(EmployeeForm,self).__init__(*args, **kwargs)
        self.fields['position'].empty_label = "Select"
        self.fields['Department'].empty_label = "Select"
    


    def clean_username(self):
        username = self.cleaned_data.get('emp_code')
        qs = User.objects.filter(username=username)
        if qs.exists():
            raise forms.ValidationError('username already exists')
        return username
    
    def clean(self):
        cleaned_data = self.cleaned_data
        password_first = self.cleaned_data.get('password_first')
        password_again = self.cleaned_data.get('password_again')
        if password_first and password_again and password_first != 
password_again:
            raise forms.ValidationError("Passwords din't match")
        return cleaned_data
    
    def clean_email(self):
        email_address = self.cleaned_data.get('email')
        qs = User.objects.filter(email=email_address)
        if qs.exists():
            raise forms.ValidationError("This email_id already registered")
        return email_address

views.py
def employee_form(request, id=0):
    if request.method == "GET":
        if id == 0:
            form = EmployeeForm()
        else:
            employee = Employee.objects.get(pk=id)
            form = EmployeeForm(instance=employee)
        return render(request, "users/employee_form.html", {'form': form})
    else:
        if id == 0:
            form = EmployeeForm(request.POST)
        else:
            employee = Employee.objects.get(pk=id)
            form = EmployeeForm(request.POST,instance= employee)
        if form.is_valid():
            form.save()
        return redirect('/list')


employee_form.html


{% block content %}
<div class="form-group">
<form action="" method="post" autocomplete="off">
    {% csrf_token %}
    {{form.fullname|as_crispy_field}}
    {{form.mobile|as_crispy_field}}
    {{form.email|as_crispy_field}}
    
    <div class="row">
        <div class="col-md-4">
            {{form.emp_code|as_crispy_field}}
        </div>
        <div class="col-md-4">
            {{form.position|as_crispy_field}}
        </div>
        <div class="col-md-4">
            {{form.Department|as_crispy_field}}
        </div>
    </div>

    <div class="row">
        <div class="col-md-6"  >
            {{form.password_first|as_crispy_field}}
        </div>
        <div class="col-md-6" >
            {{form.password_again|as_crispy_field}}
        </div>
    </div>

    <br><br><br>
    <div class="row">
        <div class="col-md-8">
            <button type="submit" class="btn btn-success btn-block btn-lg"><
i class="fas fa-database"></i>
                Submit</button>
        </div>
        <div class="col-md-4">
            <a href="{% url 'employee_list' %}" class="btn btn-secondary 
btn-block btn-lg">
                <i class="fas fa-stream"></i> Back to list
            </a>
        </div>
    </div>

</form>
{% if form.error %}
        {% for field in form %}
            {% for error in field.error %}
                <p> {{ errors }} </p>
            {% endfor %}
        {% endfor %}
        
        {% for error in form.non_field_error %}
        <p> {{ error }} </p>
        {% endfor %}
{% endif %}
</div>



{% endblock content %}



-- 
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/6ba949b0-0fc4-443c-ba27-136754fbd1f5n%40googlegroups.com.

Reply via email to