42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
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__' |