api serializer

This commit is contained in:
2020-11-21 21:15:40 +00:00
parent 923ae695ff
commit 3be64cc03b
3 changed files with 46 additions and 33 deletions

View File

@@ -197,7 +197,8 @@ class Job(models.Model):
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.shortterm)
#if type(self.job_group) = str:
# self.job_group=JobGroup.objects.filter(slug=self.job)
super().save(*args, **kwargs)
def __str__(self):

View File

@@ -4,9 +4,10 @@ from rest_framework import serializers
class MemberSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Member
fields = [
fields = ['id',
'firstname',
'surname',
'nickname',
@@ -21,54 +22,57 @@ class JobGroupSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = JobGroup
fields = [
'id',
'name',
'shortterm',
'slug'
]
class JobSerializer(serializers.HyperlinkedModelSerializer):
job_group = JobGroupSerializer()
#job_group = JobGroupSerializer()
job_group = serializers.SlugRelatedField(
slug_field='slug',queryset = JobGroup.objects
)
class Meta:
model = Job
fields = [
'id',
'name',
'shortterm',
'job_group',
'slug'
]
def create(self, validated_data):
job_groups_data = validated_data.pop('job_group')
jobgroup = JobGroup.objects.get(**job_groups_data)
if not jobgroup:
jobgroup = JobGroup.objects.create(**job_groups_data)
job = Job.objects.create(job_group=jobgroup, **validated_data)
return job
class JobMemberSerializer(serializers.HyperlinkedModelSerializer):
member = MemberSerializer()
job = JobSerializer()
#member = MemberSerializer()
#job = JobSerializer()
job = serializers.SlugRelatedField(
slug_field='slug',queryset = Job.objects
)
member= serializers.SlugRelatedField(
slug_field='nickname',queryset = Member.objects
)
class Meta:
model = JobMember
fields = [
'id',
'job_start',
'job_end',
'member',
'job',
'job_role'
]
def create(self, validated_data):
member_data = validated_data.pop('member')
print(member_data)
member = Member.objects.get(firstname=member_data['firstname'], surname=member_data['surname'])
# def create(self, validated_data):
# member_data = validated_data.pop('member')
# print(member_data)
# member = Member.objects.get(firstname=member_data['firstname'], surname=member_data['surname'])
#
# job_data = validated_data.pop('job')
# print(job_data)
# job = Job.objects.get(name=job_data['name'])
job_data = validated_data.pop('job')
print(job_data)
job = Job.objects.get(name=job_data['name'])
# jobmember = JobMember.objects.create(member=member, job=job, **validated_data)
jobmember = JobMember.objects.create(member=member, job=job, **validated_data)
return jobmember
# return jobmember

View File

@@ -2,6 +2,7 @@ from django.http import Http404
from django.shortcuts import render
from collections import deque
from django_filters.rest_framework import DjangoFilterBackend
from .models import Member, JobMember, JobGroup, Job
from .serializers import MemberSerializer, JobSerializer, JobGroupSerializer, JobMemberSerializer
@@ -97,9 +98,9 @@ class MemberViewSet(viewsets.ModelViewSet):
serializer_class = MemberSerializer
#permission_classes = [permissions.IsAuthenticated]
# filter_backends = [DjangoFilterBackend]
# filterset_fields = ['legacy_id', 'slug','legacy_rubrik_id']
lookup_field = 'name'
filter_backends = [DjangoFilterBackend]
filterset_fields = ['nickname','mailaccount']
# lookup_field = 'name'
def pre_save(self, obj):
obj.image = self.request.FILES.get('image')
@@ -112,8 +113,10 @@ class JobGroupViewSet(viewsets.ModelViewSet):
queryset = JobGroup.all_jobgroups.all()
serializer_class = JobGroupSerializer
lookup_field = 'name'
filter_backends = [DjangoFilterBackend]
filterset_fields = ['name','slug']
#lookup_field = 'name'
# lookup_field = 'name'
class JobViewSet(viewsets.ModelViewSet):
"""
@@ -121,7 +124,9 @@ class JobViewSet(viewsets.ModelViewSet):
"""
queryset = Job.objects.all()
serializer_class = JobSerializer
filter_backends = [DjangoFilterBackend]
filterset_fields = ['name','slug']
#lookup_field = 'slug'
class JobMemberViewSet(viewsets.ModelViewSet):
"""
@@ -129,3 +134,6 @@ class JobMemberViewSet(viewsets.ModelViewSet):
"""
queryset = JobMember.objects.all()
serializer_class = JobMemberSerializer
filter_backends = [DjangoFilterBackend]
filterset_fields = ['member','job','job_role']
#lookup_field = 'nickname'