From 509d51bde622d97aaf86998268e888f9f33d0d3b Mon Sep 17 00:00:00 2001 From: sm4640 Date: Mon, 28 Apr 2025 21:28:14 +0900 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Feat:=20[#32]=20project=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1,=20=EC=A1=B0=ED=9A=8C,=20=ED=8C=80=EC=9B=90=20?= =?UTF-8?q?=EB=A7=A4=ED=95=91=20serializer=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- projects/serializers.py | 42 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 projects/serializers.py diff --git a/projects/serializers.py b/projects/serializers.py new file mode 100644 index 0000000..a8d3af0 --- /dev/null +++ b/projects/serializers.py @@ -0,0 +1,42 @@ +from .models import * +from users.models import User + +from rest_framework import serializers + +class ProjectListViewSerializer(serializers.ModelSerializer): + + class Meta: + model = Project + fields = ['id', 'category', 'thumbnail', 'title', 'view_count', 'like_count', 'scrap_count'] + +class ProjectCreateSerializer(serializers.ModelSerializer): + members = serializers.ListField( + child=serializers.CharField(), write_only=True, required=False + ) + team_name = serializers.CharField(required=False) + + class Meta: + model = Project + fields = ['is_team', 'team_name', 'title', 'category', 'members'] + read_only_fields = ['owner'] + + def create(self, validated_data): + nicknames = validated_data.pop('members', []) + validated_data['owner'] = self.context['request'].user + project = Project.objects.create(**validated_data) + + if not validated_data['is_team']: + return project + + users = User.objects.filter(nickname__in=nicknames) + users = list(users) + [validated_data["owner"]] + + for user in users: + ProjectTeamList.objects.create(user=user, project=project) + + return project + +class ProjectTeamSerializer(serializers.ModelSerializer): + class Meta: + model = ProjectTeamList + fields = '__all__' \ No newline at end of file