Skip to content

Instantly share code, notes, and snippets.

@Himan10
Created March 17, 2024 13:35
Show Gist options
  • Save Himan10/c0c6e4e1d703f390c7c5b1d3aaab0f84 to your computer and use it in GitHub Desktop.
Save Himan10/c0c6e4e1d703f390c7c5b1d3aaab0f84 to your computer and use it in GitHub Desktop.
User model
class User(models.Model):
"""
Represents a user profile with related details.
This class defines the attributes associated with a user profile.
This class has two foreign keys that point to Job and Company table
"""
def media_upload_path(instance, filename):
return f"user_{instance.user_id}/data/{filename}"
class Meta:
db_table = values.DB_TABLE_USER_PROFILE
user_id = models.UUIDField(
primary_key=True, default=None, editable=False, null=False
)
name = models.CharField(max_length=30, null=False)
address = models.TextField(max_length=100, null=True, default=None)
about = models.TextField(max_length=100, default=None, null=True)
job = models.ForeignKey(Job, on_delete=models.CASCADE, null=True, default=None)
resume = models.FileField(upload_to=media_upload_path, null=True, default=None)
profile_picture = models.FileField(
upload_to=media_upload_path, null=True, default=None
)
cover_letter = models.FileField(upload_to=media_upload_path, null=True)
company = models.ForeignKey(
Company, on_delete=models.CASCADE, null=True, default=None
)
user_type = models.CharField(max_length=15, default=None, null=False, editable=False)
experience = models.CharField(default=0, null=True, max_length=3)
gender = models.CharField(choices=GENDER, max_length=6, default=None, null=True)
age = models.PositiveIntegerField(default=None, null=True)
education = models.JSONField(default=dict, null=False)
professional_skills = models.JSONField(default=dict, null=False)
hiring_status = models.CharField(
max_length=15, choices=HIRING_STATUS, default="Not Applied Yet", null=True
)
profession = models.TextField(max_length=100, default=None, null=False, blank=False)
work_experience = models.JSONField(default=dict, null=False)
# These fields will be displayed as a part of "Contact" field
email = models.CharField(max_length=30, null=False)
phone = models.CharField(max_length=12, default=None, null=True)
website = models.URLField(default=None, null=True)
social_handles = models.URLField(default=None, null=True)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment