rtc_backend/apps/admins/serializers.py
2026-01-29 10:02:15 +08:00

54 lines
1.7 KiB
Python

"""
管理员模块序列化器
"""
from rest_framework import serializers
from .models import AdminUser
class AdminUserSerializer(serializers.ModelSerializer):
"""管理员用户序列化器"""
role_display = serializers.CharField(source='get_role_display', read_only=True)
class Meta:
model = AdminUser
fields = ['id', 'username', 'name', 'email', 'phone', 'role', 'role_display',
'is_active', 'last_login_ip', 'created_at']
read_only_fields = ['id', 'last_login_ip', 'created_at']
class AdminLoginSerializer(serializers.Serializer):
"""管理员登录序列化器"""
username = serializers.CharField(max_length=50, help_text='用户名')
password = serializers.CharField(max_length=128, write_only=True, help_text='密码')
class AdminChangePasswordSerializer(serializers.Serializer):
"""管理员修改密码序列化器"""
old_password = serializers.CharField(max_length=128, write_only=True)
new_password = serializers.CharField(max_length=128, write_only=True)
def validate_new_password(self, value):
if len(value) < 6:
raise serializers.ValidationError('密码长度不能少于6位')
return value
class CreateAdminUserSerializer(serializers.ModelSerializer):
"""创建管理员序列化器"""
password = serializers.CharField(max_length=128, write_only=True)
class Meta:
model = AdminUser
fields = ['username', 'password', 'name', 'email', 'phone', 'role']
def create(self, validated_data):
password = validated_data.pop('password')
admin = AdminUser(**validated_data)
admin.set_password(password)
admin.save()
return admin