I’m working on a project Hr Management System. I have a model with foreign key fields to office & staff. I’m trying to save staff in user & staff role wise with foreign key office name. my view
JavaScript
x
24
24
1
def post(self, request):
2
if request.method != "POST":
3
messages.error(request, "Invalid Method ")
4
else:
5
first_name = request.POST.get('first_name')
6
last_name = request.POST.get('last_name')
7
username = request.POST.get('username')
8
email = request.POST.get('email')
9
password = request.POST.get('password')
10
address = request.POST.get('address')
11
phone = request.POST.get('phone')
12
image = "image"
13
office_id=request.POST.get("office")
14
office=Office.objects.get(id=office_id)
15
try:
16
user = CustomUser.objects.create_user(username=username, password=password, email=email, first_name=first_name, last_name=last_name, user_type=2)
17
user.staffs.address=address
18
user.staffs.phone=phone
19
user.staffs.image=image
20
user.staffs.office_id=office
21
user.save()
22
messages.success(request, "Staff Added Successfully!")
23
return render(request, 'admin_template/add_staff.html')
24
My models
JavaScript
1
25
25
1
class Staffs(models.Model):
2
id = models.AutoField(primary_key=True)
3
admin = models.OneToOneField(CustomUser, on_delete = models.CASCADE)
4
address = models.CharField(max_length=255, blank=True)
5
phone = models.CharField(blank=True,max_length=20)
6
image = models.ImageField(upload_to='uploads/user/',blank=True)
7
office_id = models.ForeignKey(Office,on_delete=models.DO_NOTHING)
8
created_at = models.DateTimeField(auto_now_add=True)
9
updated_at = models.DateTimeField(auto_now=True)
10
objects = models.Manager()
11
12
@receiver(post_save,sender=CustomUser)
13
def create_user_profile(sender, instance, created, **kwargs):
14
if created:
15
if instance.user_type == 1:
16
AdminHOD.objects.create(admin=instance)
17
if instance.user_type == 2:
18
Staffs.objects.create(admin=instance)
19
@receiver(post_save, sender=CustomUser)
20
def save_user_profile(sender, instance,**kwargs):
21
if instance.user_type == 1:
22
instance.adminhod.save()
23
if instance.user_type == 2:
24
instance.staffs.save()
25
Advertisement
Answer
- We can remove (id) from Models since it auto-implemented
- office = models.ForeignKey(Office,on_delete=models.DO_NOTHING)
- Assign user staffs office to office like this
JavaScript
1
2
1
user.staffs.office = office
2