feed.py 1010 B

1234567891011121314151617181920212223242526272829303132
  1. from rest_framework import serializers
  2. from ...categories.serializers import CategorySerializer
  3. from ...core.serializers import MutableFields
  4. from ...users.serializers import UserSerializer
  5. from ..models import Post
  6. from .post import PostSerializer
  7. __all__ = ["FeedSerializer"]
  8. FeedUserSerializer = UserSerializer.subset_fields(
  9. "id", "username", "avatars", "url", "title", "rank"
  10. )
  11. FeedCategorySerializer = CategorySerializer.subset_fields("name", "css_class", "url")
  12. class FeedSerializer(PostSerializer, MutableFields):
  13. poster = FeedUserSerializer(many=False, read_only=True)
  14. category = FeedCategorySerializer(many=False, read_only=True)
  15. thread = serializers.SerializerMethodField()
  16. class Meta:
  17. model = Post
  18. fields = PostSerializer.Meta.fields + ["category", "thread"]
  19. def get_thread(self, obj):
  20. return {"title": obj.thread.title, "url": obj.thread.get_absolute_url()}
  21. FeedSerializer = FeedSerializer.exclude_fields("is_liked", "is_new", "is_read")