29 lines
1018 B
Python
29 lines
1018 B
Python
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
|