Feat: [#32] project 생성, 조회, 팀원 매핑 serializer 구현

This commit is contained in:
sm4640
2025-04-28 21:28:14 +09:00
parent d7bb652243
commit 509d51bde6

42
projects/serializers.py Normal file
View File

@@ -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__'