daren/apps/knowledge_base/serializers.py

37 lines
1.4 KiB
Python
Raw Permalink Normal View History

2025-05-29 10:08:06 +08:00
# apps/knowledge_base/serializers.py
from rest_framework import serializers
from apps.knowledge_base.models import KnowledgeBase, KnowledgeBaseDocument
from apps.user.models import User
class KnowledgeBaseSerializer(serializers.ModelSerializer):
user_id = serializers.UUIDField(required=False)
creator_name = serializers.SerializerMethodField(read_only=True)
class Meta:
model = KnowledgeBase
fields = [
'id', 'name', 'desc', 'type', 'department', 'group',
'user_id', 'creator_name', 'external_id', 'create_time', 'update_time'
]
read_only_fields = ['id', 'creator_name', 'external_id', 'create_time', 'update_time']
def get_creator_name(self, obj):
try:
user = User.objects.get(id=obj.user_id)
return user.name
except User.DoesNotExist:
return "未知用户"
def create(self, validated_data):
validated_data['user_id'] = self.context['request'].user.id
return super().create(validated_data)
class KnowledgeBaseDocumentSerializer(serializers.ModelSerializer):
class Meta:
model = KnowledgeBaseDocument
fields = [
'id', 'knowledge_base', 'document_id', 'document_name',
'external_id', 'status', 'uploader_name', 'create_time'
]
read_only_fields = ['id', 'document_id', 'external_id', 'status', 'create_time']