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