aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework
diff options
context:
space:
mode:
authorTom Christie2014-11-20 11:51:42 +0000
committerTom Christie2014-11-20 11:51:42 +0000
commit096c58b784faee6b3c71201ad8b2708f7ccd5f7f (patch)
treea03ce1bb5c884a08ec2bc7aec48655c8196837c7 /rest_framework
parentbc83dfece460b6639d915bd8fb42b3701cd91172 (diff)
parent37312eed216d6f8a048a32c7ae7e0cd248528550 (diff)
downloaddjango-rest-framework-096c58b784faee6b3c71201ad8b2708f7ccd5f7f.tar.bz2
Merge branch 'master' into 3.0-beta
Diffstat (limited to 'rest_framework')
-rw-r--r--rest_framework/serializers.py20
1 files changed, 11 insertions, 9 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py
index 2e34dbe7..2d5c843e 100644
--- a/rest_framework/serializers.py
+++ b/rest_framework/serializers.py
@@ -721,6 +721,7 @@ class ModelSerializer(Serializer):
# arguments to deal with `unique_for` dates that are required to
# be in the input data in order to validate it.
hidden_fields = {}
+ unique_constraint_names = set()
for model_field_name, field_name in model_field_mapping.items():
try:
@@ -729,19 +730,20 @@ class ModelSerializer(Serializer):
continue
# Include each of the `unique_for_*` field names.
- unique_constraint_names = set([
+ unique_constraint_names |= set([
model_field.unique_for_date,
model_field.unique_for_month,
model_field.unique_for_year
])
- unique_constraint_names -= set([None])
- # Include each of the `unique_together` field names,
- # so long as all the field names are included on the serializer.
- for parent_class in [model] + list(model._meta.parents.keys()):
- for unique_together_list in parent_class._meta.unique_together:
- if set(fields).issuperset(set(unique_together_list)):
- unique_constraint_names |= set(unique_together_list)
+ unique_constraint_names -= set([None])
+
+ # Include each of the `unique_together` field names,
+ # so long as all the field names are included on the serializer.
+ for parent_class in [model] + list(model._meta.parents.keys()):
+ for unique_together_list in parent_class._meta.unique_together:
+ if set(fields).issuperset(set(unique_together_list)):
+ unique_constraint_names |= set(unique_together_list)
# Now we have all the field names that have uniqueness constraints
# applied, we can add the extra 'required=...' or 'default=...'
@@ -755,7 +757,7 @@ class ModelSerializer(Serializer):
elif getattr(unique_constraint_field, 'auto_now', None):
default = timezone.now
elif unique_constraint_field.has_default():
- default = model_field.default
+ default = unique_constraint_field.default
else:
default = empty