33 lines
937 B
Python
33 lines
937 B
Python
from rest_framework import serializers
|
|
|
|
from apps.dashboard.models import Item, List
|
|
from apps.lyric.models import User
|
|
|
|
|
|
class ItemSerializer(serializers.ModelSerializer):
|
|
text = serializers.CharField()
|
|
|
|
def validate_text(self, value):
|
|
list_ = self.context["list"]
|
|
if list_.item_set.filter(text=value).exists():
|
|
raise serializers.ValidationError("duplicate")
|
|
return value
|
|
|
|
class Meta:
|
|
model = Item
|
|
fields = ["id", "text"]
|
|
|
|
class ListSerializer(serializers.ModelSerializer):
|
|
name = serializers.ReadOnlyField()
|
|
url = serializers.CharField(source="get_absolute_url", read_only=True)
|
|
items = ItemSerializer(many=True, read_only=True, source="item_set")
|
|
|
|
class Meta:
|
|
model = List
|
|
fields = ["id", "name", "url", "items"]
|
|
|
|
class UserSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = User
|
|
fields = ["id", "username"]
|