37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
# 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']
|
|
|