django-rest-tutorial/snippets/serializers.py

34 lines
1.2 KiB
Python

from rest_framework import serializers
from snippets.models import Snippet, LANG_CHOICES, STYLE_CHOICES
from django.contrib.auth.models import User
class SnippetSerializer(serializers.ModelSerializer):
owner = serializers.ReadOnlyField(source="owner.username")
class Meta:
model = Snippet
fields = ["id", "title", "code", "language", "line_numbers", "style", "owner"]
def create(self, validated_data):
return Snippet.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.title = validated_data.get("title", instance.title)
instance.code = validated_data.get("code", instance.code)
instance.line_numbers = validated_data.get("line_numbers", instance.line_numbers)
instance.language = validated_data.get("language", instance.language)
instance.style = validated_data.get("style", instance.style)
instance.save()
return instance
class UserSerializer(serializers.ModelSerializer):
snippets = serializers.PrimaryKeyRelatedField(many=True, queryset=Snippet.objects.all())
class Meta:
model = User
fields = ["id", "username", "snippets"]