aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework
diff options
context:
space:
mode:
Diffstat (limited to 'rest_framework')
-rw-r--r--rest_framework/fields.py2
-rw-r--r--rest_framework/utils/field_mapping.py3
2 files changed, 5 insertions, 0 deletions
diff --git a/rest_framework/fields.py b/rest_framework/fields.py
index 0963d4bf..9d577c53 100644
--- a/rest_framework/fields.py
+++ b/rest_framework/fields.py
@@ -224,6 +224,8 @@ class Field(object):
"""
if self.default is empty:
raise SkipField()
+ if is_simple_callable(self.default):
+ return self.default()
return self.default
def run_validation(self, data=empty):
diff --git a/rest_framework/utils/field_mapping.py b/rest_framework/utils/field_mapping.py
index 30fae370..fd6da699 100644
--- a/rest_framework/utils/field_mapping.py
+++ b/rest_framework/utils/field_mapping.py
@@ -219,6 +219,9 @@ def get_relation_kwargs(field_name, relation_info):
kwargs['required'] = False
if model_field.null:
kwargs['allow_null'] = True
+ if getattr(model_field, 'unique', False):
+ validator = UniqueValidator(queryset=model_field.model._default_manager)
+ kwargs['validators'] = [validator]
return kwargs