Feat: [#81] keyword, description 및 object 정보 추가

This commit is contained in:
sm4640
2025-07-19 19:44:57 +09:00
parent 4d7f0e8776
commit c04fa402df
3 changed files with 16 additions and 2 deletions

View File

@@ -16,6 +16,10 @@ class Page(me.EmbeddedDocument):
class Code(me.Document): class Code(me.Document):
pages = me.ListField(me.EmbeddedDocumentField(Page)) pages = me.ListField(me.EmbeddedDocumentField(Page))
keyword = me.ListField(me.StringField(max_length=50), default=list)
description = me.StringField(default='', blank=True)
object_type = me.StringField(choices=("portfolio", "project"))
object_id = me.StringField()
created_at = me.DateTimeField(default=timezone.now) created_at = me.DateTimeField(default=timezone.now)
updated_at = me.DateTimeField(default=timezone.now) updated_at = me.DateTimeField(default=timezone.now)

View File

@@ -21,6 +21,8 @@ class PageSerializer(serializers.Serializer):
class CodeSerializer(serializers.Serializer): class CodeSerializer(serializers.Serializer):
id = serializers.SerializerMethodField() id = serializers.SerializerMethodField()
pages = PageSerializer(many=True, required=False) pages = PageSerializer(many=True, required=False)
keyword = serializers.ListField(child=serializers.CharField(), required=False, allow_empty=True)
description = serializers.CharField(allow_blank=True, required=False)
created_at = serializers.SerializerMethodField() created_at = serializers.SerializerMethodField()
updated_at = serializers.SerializerMethodField() updated_at = serializers.SerializerMethodField()
@@ -34,6 +36,9 @@ class CodeSerializer(serializers.Serializer):
return str(obj.id) return str(obj.id)
def create(self, validated_data): def create(self, validated_data):
request = self.context['request']
validated_data['object_type'] = request.query_params.get('type')
validated_data['object_id'] = request.query_params.get('id')
pages_data = validated_data.pop('pages') pages_data = validated_data.pop('pages')
pages = [ pages = [
Page( Page(
@@ -63,5 +68,10 @@ class CodeSerializer(serializers.Serializer):
) )
) )
if 'keyword' in validated_data:
instance.keyword = validated_data['keyword']
if 'description' in validated_data:
instance.description = validated_data['description']
instance.save() instance.save()
return instance return instance

View File

@@ -59,7 +59,7 @@ class NoCodeToolAPIView(APIView):
obj_serializer = NocodetoolObjectMapService.mapping_model_serializer(related_type) obj_serializer = NocodetoolObjectMapService.mapping_model_serializer(related_type)
serializer = CodeSerializer(data=request.data) serializer = CodeSerializer(data=request.data, context={'request': request})
if serializer.is_valid(): if serializer.is_valid():
code = serializer.save() code = serializer.save()
obj.code_id = str(code.id) obj.code_id = str(code.id)
@@ -97,7 +97,7 @@ class NoCodeToolAPIView(APIView):
thumbnail_file = data.pop("thumbnail", None) thumbnail_file = data.pop("thumbnail", None)
obj_serializer = NocodetoolObjectMapService.mapping_model_serializer(related_type) obj_serializer = NocodetoolObjectMapService.mapping_model_serializer(related_type)
serializer = CodeSerializer(code, data=data, partial=True) serializer = CodeSerializer(code, data=data, partial=True, context={'request': request})
if serializer.is_valid(): if serializer.is_valid():
updated_code = serializer.save() updated_code = serializer.save()