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