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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/6ba949b0-0fc4-443c-ba27-136754fbd1f5n%40googlegroups.com.