✨ Feat: [#32] project 생성, 조회, 팀원 매핑 serializer 구현
This commit is contained in:
42
projects/serializers.py
Normal file
42
projects/serializers.py
Normal 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__'
|
||||||
Reference in New Issue
Block a user