# 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']