aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/fields.py
diff options
context:
space:
mode:
authorTom Christie2015-01-23 15:43:21 +0000
committerTom Christie2015-01-23 15:43:21 +0000
commitb07d931261c2e9f722fb2de63ab17f088142b6f1 (patch)
tree584137aa7ed0193c490c49c063253328a3b11da7 /rest_framework/fields.py
parent47ddbc09d9959f1116eabbf67e8d1943f35ffeef (diff)
parent889a07f5563a0f970639a0958c0dcbc26e82919f (diff)
downloaddjango-rest-framework-b07d931261c2e9f722fb2de63ab17f088142b6f1.tar.bz2
Merge pull request #2448 from tomchristie/uuid-field
Added UUIDField.
Diffstat (limited to 'rest_framework/fields.py')
-rw-r--r--rest_framework/fields.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/rest_framework/fields.py b/rest_framework/fields.py
index cc9410aa..5e3f7ce4 100644
--- a/rest_framework/fields.py
+++ b/rest_framework/fields.py
@@ -23,6 +23,7 @@ import datetime
import decimal
import inspect
import re
+import uuid
class empty:
@@ -632,6 +633,23 @@ class URLField(CharField):
self.validators.append(validator)
+class UUIDField(Field):
+ default_error_messages = {
+ 'invalid': _('"{value}" is not a valid UUID.'),
+ }
+
+ def to_internal_value(self, data):
+ if not isinstance(data, uuid.UUID):
+ try:
+ return uuid.UUID(data)
+ except (ValueError, TypeError):
+ self.fail('invalid', value=data)
+ return data
+
+ def to_representation(self, value):
+ return str(value)
+
+
# Number types...
class IntegerField(Field):