From 3be64cc03ba210a2a2ce046e1a55ac14c5a6e8d6 Mon Sep 17 00:00:00 2001 From: andis Date: Sat, 21 Nov 2020 21:15:40 +0000 Subject: [PATCH] api serializer --- fet2020/members/models.py | 3 +- fet2020/members/serializers.py | 56 ++++++++++++++++++---------------- fet2020/members/views.py | 20 ++++++++---- 3 files changed, 46 insertions(+), 33 deletions(-) diff --git a/fet2020/members/models.py b/fet2020/members/models.py index e01cdac4..8740b318 100644 --- a/fet2020/members/models.py +++ b/fet2020/members/models.py @@ -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): diff --git a/fet2020/members/serializers.py b/fet2020/members/serializers.py index 1d2d8665..21b51005 100644 --- a/fet2020/members/serializers.py +++ b/fet2020/members/serializers.py @@ -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 diff --git a/fet2020/members/views.py b/fet2020/members/views.py index caf1355b..19bac1fb 100644 --- a/fet2020/members/views.py +++ b/fet2020/members/views.py @@ -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' \ No newline at end of file