I’m sort of new to Django and am currently struggling with a certain aspect of it. In my project I want all Users to have access to certain Job
s added by the admin and appear on the Front end. However, each Job
has a field called userStatus
that the user should be able to edit. This field however should not change for any other users. Currently, I have created a model out of userStatus
and created a Foreign Key field to link to a Job
and also it was my Django interview questions. Then userStatus
has a User
Foreign Key Field.
class Job(models.Model):
name = models.CharField(max_length=200, help_text='Enter the Spring/Internship')
course = models.ForeignKey('Course', on_delete=models.RESTRICT,null=True)
company = models.ForeignKey('Company', on_delete=models.RESTRICT,default='N/A')
deadline = models.DateField(null=True, blank=True)
userStatus = models.ForeignKey('userStatus', on_delete=models.RESTRICT, null=True, blank=True)
class userStatus(models.Model):
user = models.ForeignKey(User, on_delete=models.RESTRICT)
USER_STATUS = (
('n', 'Not Applied'),
('a', 'Applied'),
('i', 'Got Interview'),
('o', 'Got Offer'),
('r', 'Rejected'),
)
stage = models.CharField(
primary_key=True,
max_length=1,
choices=USER_STATUS,
blank=False,
default='c',
help_text='What is the current stage of the process',
)
The User should not be able to edit any field except for the userStatus
that should only belong to them. The tuple USER_STATUS
should be the only options for that model and every Job
should have access to these 5 options. In context: One job might be called “Internship at Google”, one user may have “Got Interview” to this Job but another user has “Not applied”. This Second user may apply and wants to change their status to “Applied”. If they do, it should not affect the first user’s “Got Interview” status.
I feel as though my approach is completely wrong so please let me know how and what my approach should be.