Tôi đang làm việc trên một dự án sử dụng django-rest-framework. Trong chế độ xem API của tôi, người dùng được xác thực có thể tạo người dùng khác. Nhưng, chỉ có năm. Sau đó, nếu có năm người dùng đã đăng ký bởi một người dùng, tôi muốn gửi cho anh ấy phản hồi đã đạt đến giới hạn. Sau đó, tôi cần phải nhận được trên serializer của tôi người sử dụng xác thực nhưng, tôi không thể tìm thấy một cách để vượt qua nó từ ModelViewSet của tôi để serializer của tôi.Làm thế nào để có được xác thực người dùng trên lớp serializer để xác nhận
Đây là mã của tôi:
Xem:
class ChildUserViewSet(viewsets.ModelViewSet):
serializer_class = ChildUserSerializer
queryset = User.objects.all()
authentication_classes = (
TokenAuthentication,
)
permission_classes = (
IsAuthenticated,
)
def perform_create(self, serializer):
account_group = self.request.user.userprofile.get_account_group
mobile_number = serializer.data.get('mobile_number')
password = serializer.data.get('password')
user = serializer.save()
user.set_password(password)
user.save()
# Generate user profile
UserProfile.objects.create(
user=user,
mobile_number=mobile_number,
user_type=CHILD,
related_account_group=account_group,
)
Serializer:
class ChildUserSerializer(serializers.ModelSerializer):
mobile_number = serializers.CharField()
class Meta:
model = User
fields = (
'first_name',
'last_name',
'email',
'password',
'mobile_number',
)
def validate(self, data):
"""
Check that the start is before the stop.
"""
# Get authenticated user for raise hit limit validation
def validate_email(self, value):
if User.objects.filter(email=value):
raise serializers.ValidationError("This field must be unique.")
return value
def create(self, validated_data):
username = generate_unique_username(
u'{0}{1}'.format(
validated_data['first_name'],
validated_data['last_name'],
)
)
user = User(
username=username,
first_name=validated_data['first_name'],
last_name=validated_data['last_name'],
email=validated_data['email'],
)
user.set_password(validated_data['password'])
user.save()
return user
Sau đó, trong def validate(self, data)
chức năng của serializer của tôi, tôi muốn để có được những người dùng hiện chứng thực.
Làm cách nào để chuyển request.user từ APIView sang bộ nối tiếp của tôi?