diff options
| author | Tom Christie | 2014-11-20 11:51:42 +0000 |
|---|---|---|
| committer | Tom Christie | 2014-11-20 11:51:42 +0000 |
| commit | 096c58b784faee6b3c71201ad8b2708f7ccd5f7f (patch) | |
| tree | a03ce1bb5c884a08ec2bc7aec48655c8196837c7 /rest_framework | |
| parent | bc83dfece460b6639d915bd8fb42b3701cd91172 (diff) | |
| parent | 37312eed216d6f8a048a32c7ae7e0cd248528550 (diff) | |
| download | django-rest-framework-096c58b784faee6b3c71201ad8b2708f7ccd5f7f.tar.bz2 | |
Merge branch 'master' into 3.0-beta
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/serializers.py | 20 |
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 |
