from rest_framework import serializers from .models import FormulaDocument, FormulaRevision class FormulaDocumentSerializer(serializers.ModelSerializer): class Meta: model = FormulaDocument fields = ("id", "title", "source", "created_at", "updated_at") read_only_fields = ("id", "created_at", "updated_at") def validate_source(self, value): if len(value) > 50_000: raise serializers.ValidationError("公式源码不能超过 50000 个字符") return value def create(self, validated_data): document = FormulaDocument.objects.create( user=self.context["request"].user, **validated_data, ) FormulaRevision.objects.create(document=document, source=document.source) return document def update(self, instance, validated_data): instance = super().update(instance, validated_data) FormulaRevision.objects.create(document=instance, source=instance.source) return instance