feat: 城市手册后端完成 - 用户/区域/内容/服务/审核系统
This commit is contained in:
63
city-manual/backend/regions/serializers.py
Normal file
63
city-manual/backend/regions/serializers.py
Normal file
@@ -0,0 +1,63 @@
|
||||
from rest_framework import serializers
|
||||
from .models import Region, ModeratorApplication, ModeratorPermission
|
||||
from users.serializers import UserSerializer
|
||||
|
||||
|
||||
class RegionSerializer(serializers.ModelSerializer):
|
||||
parent = serializers.PrimaryKeyRelatedField(read_only=True)
|
||||
children_count = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Region
|
||||
fields = [
|
||||
'id', 'name', 'level', 'parent', 'code', 'description',
|
||||
'is_active', 'created_at', 'children_count'
|
||||
]
|
||||
read_only_fields = ['created_at']
|
||||
|
||||
def get_children_count(self, obj):
|
||||
return obj.children.count()
|
||||
|
||||
|
||||
class RegionDetailSerializer(serializers.ModelSerializer):
|
||||
parent = RegionSerializer(read_only=True)
|
||||
children = RegionSerializer(many=True, read_only=True)
|
||||
articles_count = serializers.SerializerMethodField()
|
||||
services_count = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Region
|
||||
fields = [
|
||||
'id', 'name', 'level', 'parent', 'children', 'code', 'description',
|
||||
'is_active', 'created_at', 'articles_count', 'services_count'
|
||||
]
|
||||
|
||||
def get_articles_count(self, obj):
|
||||
return obj.articles.filter(publish_status='published').count()
|
||||
|
||||
def get_services_count(self, obj):
|
||||
return obj.featured_services.filter(publish_status='published').count()
|
||||
|
||||
|
||||
class ModeratorApplicationSerializer(serializers.ModelSerializer):
|
||||
applicant = UserSerializer(read_only=True)
|
||||
region = RegionSerializer(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = ModeratorApplication
|
||||
fields = [
|
||||
'id', 'applicant', 'region', 'application_reason',
|
||||
'support_count', 'required_support', 'deadline',
|
||||
'status', 'created_at'
|
||||
]
|
||||
read_only_fields = ['applicant', 'support_count', 'status', 'created_at']
|
||||
|
||||
|
||||
class ModeratorPermissionSerializer(serializers.ModelSerializer):
|
||||
moderator = UserSerializer(read_only=True)
|
||||
region = RegionSerializer(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = ModeratorPermission
|
||||
fields = ['id', 'moderator', 'region', 'rank', 'status', 'created_at']
|
||||
read_only_fields = ['created_at']
|
||||
Reference in New Issue
Block a user