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): def save(self, *args, **kwargs):
if not self.slug: if not self.slug:
self.slug = slugify(self.shortterm) self.slug = slugify(self.shortterm)
#if type(self.job_group) = str:
# self.job_group=JobGroup.objects.filter(slug=self.job)
super().save(*args, **kwargs) super().save(*args, **kwargs)
def __str__(self): def __str__(self):

View File

@@ -4,9 +4,10 @@ from rest_framework import serializers
class MemberSerializer(serializers.HyperlinkedModelSerializer): class MemberSerializer(serializers.HyperlinkedModelSerializer):
class Meta: class Meta:
model = Member model = Member
fields = [ fields = ['id',
'firstname', 'firstname',
'surname', 'surname',
'nickname', 'nickname',
@@ -21,54 +22,57 @@ class JobGroupSerializer(serializers.HyperlinkedModelSerializer):
class Meta: class Meta:
model = JobGroup model = JobGroup
fields = [ fields = [
'id',
'name', 'name',
'shortterm', 'shortterm',
'slug'
] ]
class JobSerializer(serializers.HyperlinkedModelSerializer): class JobSerializer(serializers.HyperlinkedModelSerializer):
job_group = JobGroupSerializer() #job_group = JobGroupSerializer()
job_group = serializers.SlugRelatedField(
slug_field='slug',queryset = JobGroup.objects
)
class Meta: class Meta:
model = Job model = Job
fields = [ fields = [
'id',
'name', 'name',
'shortterm', 'shortterm',
'job_group', '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): class JobMemberSerializer(serializers.HyperlinkedModelSerializer):
member = MemberSerializer() #member = MemberSerializer()
job = JobSerializer() #job = JobSerializer()
job = serializers.SlugRelatedField(
slug_field='slug',queryset = Job.objects
)
member= serializers.SlugRelatedField(
slug_field='nickname',queryset = Member.objects
)
class Meta: class Meta:
model = JobMember model = JobMember
fields = [ fields = [
'id',
'job_start', 'job_start',
'job_end', 'job_end',
'member', 'member',
'job', 'job',
'job_role'
] ]
def create(self, validated_data): # def create(self, validated_data):
member_data = validated_data.pop('member') # member_data = validated_data.pop('member')
print(member_data) # print(member_data)
member = Member.objects.get(firstname=member_data['firstname'], surname=member_data['surname']) # 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') # jobmember = JobMember.objects.create(member=member, job=job, **validated_data)
print(job_data)
job = Job.objects.get(name=job_data['name'])
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 django.shortcuts import render
from collections import deque from collections import deque
from django_filters.rest_framework import DjangoFilterBackend
from .models import Member, JobMember, JobGroup, Job from .models import Member, JobMember, JobGroup, Job
from .serializers import MemberSerializer, JobSerializer, JobGroupSerializer, JobMemberSerializer from .serializers import MemberSerializer, JobSerializer, JobGroupSerializer, JobMemberSerializer
@@ -97,9 +98,9 @@ class MemberViewSet(viewsets.ModelViewSet):
serializer_class = MemberSerializer serializer_class = MemberSerializer
#permission_classes = [permissions.IsAuthenticated] #permission_classes = [permissions.IsAuthenticated]
# filter_backends = [DjangoFilterBackend] filter_backends = [DjangoFilterBackend]
# filterset_fields = ['legacy_id', 'slug','legacy_rubrik_id'] filterset_fields = ['nickname','mailaccount']
lookup_field = 'name' # lookup_field = 'name'
def pre_save(self, obj): def pre_save(self, obj):
obj.image = self.request.FILES.get('image') obj.image = self.request.FILES.get('image')
@@ -112,8 +113,10 @@ class JobGroupViewSet(viewsets.ModelViewSet):
queryset = JobGroup.all_jobgroups.all() queryset = JobGroup.all_jobgroups.all()
serializer_class = JobGroupSerializer serializer_class = JobGroupSerializer
lookup_field = 'name' filter_backends = [DjangoFilterBackend]
filterset_fields = ['name','slug']
#lookup_field = 'name'
# lookup_field = 'name'
class JobViewSet(viewsets.ModelViewSet): class JobViewSet(viewsets.ModelViewSet):
""" """
@@ -121,7 +124,9 @@ class JobViewSet(viewsets.ModelViewSet):
""" """
queryset = Job.objects.all() queryset = Job.objects.all()
serializer_class = JobSerializer serializer_class = JobSerializer
filter_backends = [DjangoFilterBackend]
filterset_fields = ['name','slug']
#lookup_field = 'slug'
class JobMemberViewSet(viewsets.ModelViewSet): class JobMemberViewSet(viewsets.ModelViewSet):
""" """
@@ -129,3 +134,6 @@ class JobMemberViewSet(viewsets.ModelViewSet):
""" """
queryset = JobMember.objects.all() queryset = JobMember.objects.all()
serializer_class = JobMemberSerializer serializer_class = JobMemberSerializer
filter_backends = [DjangoFilterBackend]
filterset_fields = ['member','job','job_role']
#lookup_field = 'nickname'