diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 5770fcf6a..b45f343a4 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -24,7 +24,8 @@ from rest_framework.utils.field_mapping import ( ClassLookupDict ) from rest_framework.validators import ( - UniqueForDateValidator, UniqueTogetherValidator + UniqueForDateValidator, UniqueForMonthValidator, UniqueForYearValidator, + UniqueTogetherValidator ) import copy import inspect @@ -601,6 +602,22 @@ class ModelSerializer(Serializer): ) validators.append(validator) + if field.unique_for_month and field_name in field_names: + validator = UniqueForMonthValidator( + queryset=model_class._default_manager, + field=field_name, + date_field=field.unique_for_month + ) + validators.append(validator) + + if field.unique_for_year and field_name in field_names: + validator = UniqueForYearValidator( + queryset=model_class._default_manager, + field=field_name, + date_field=field.unique_for_year + ) + validators.append(validator) + return validators def _get_base_fields(self):