aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rest_framework/serializers.py19
1 files changed, 18 insertions, 1 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py
index 5770fcf6..b45f343a 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):