33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
from rest_framework import serializers
|
|
from .models import Memo, MemoImage
|
|
|
|
|
|
class MemoImageSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = MemoImage
|
|
fields = ['id', 'image', 'uploaded_at', 'alt_text']
|
|
|
|
|
|
class MemoSerializer(serializers.ModelSerializer):
|
|
images = MemoImageSerializer(many=True, read_only=True)
|
|
content_preview = serializers.ReadOnlyField()
|
|
created_by_name = serializers.CharField(source='created_by.username', read_only=True)
|
|
|
|
class Meta:
|
|
model = Memo
|
|
fields = ['id', 'title', 'content', 'content_preview', 'created_by', 'created_by_name',
|
|
'created_at', 'updated_at', 'is_active', 'images']
|
|
read_only_fields = ['created_by', 'created_at', 'updated_at']
|
|
|
|
def create(self, validated_data):
|
|
validated_data['created_by'] = self.context['request'].user
|
|
return super().create(validated_data)
|
|
|
|
|
|
class MemoListSerializer(serializers.ModelSerializer):
|
|
content_preview = serializers.ReadOnlyField()
|
|
created_by_name = serializers.CharField(source='created_by.username', read_only=True)
|
|
|
|
class Meta:
|
|
model = Memo
|
|
fields = ['id', 'title', 'content_preview', 'created_by_name', 'updated_at'] |