✨ 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