Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # MODELS
- class User(models.Model):
- name = models.CharField(max_length=50)
- # ...etc...
- class Assignment(models.Model):
- user = models.ForeignKey(
- settings.AUTH_USER_MODEL, on_delete=models.PROTECT
- )
- job = models.ForeignKey(Job, on_delete=models.PROTECT)
- location = models.ForeignKey(Location, on_delete=models.PROTECT)
- # SERIALIZER
- class UserSerializer(serializers.HyperlinkedModelSerializer):
- assignment_job = serializers.SerializerMethodField()
- multiple_locations = serializers.SerializerMethodField()
- multiple_jobs = serializers.SerializerMethodField()
- class Meta:
- model = User
- fields = [
- "url",
- "id",
- "username",
- "first_name",
- "last_name",
- "full_name",
- "email",
- "is_staff",
- "assignment_job",
- "multiple_locations",
- "multiple_jobs",
- ]
- def get_assignment_job(self, obj):
- assignment = obj.assignment_set.get(primary=True)
- return assignment.job.description
- def get_multiple_locations(self, obj):
- location_count = obj.assignment_set.filter(
- end_date__isnull=True
- ).aggregate(total_locations=Count("location"))
- if location_count["total_locations"] > 1:
- return True
- return False
- def get_multiple_jobs(self, obj):
- job_count = obj.assignment_set.filter(end_date__isnull=True).aggregate(
- total_jobs=Count("job")
- )
- if job_count["total_jobs"] > 1:
- return True
- return False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement