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"]