diff --git a/topics/3.0-announcement/index.html b/topics/3.0-announcement/index.html index 40d86e38c..0071c4361 100644 --- a/topics/3.0-announcement/index.html +++ b/topics/3.0-announcement/index.html @@ -850,18 +850,18 @@ def all_high_scores(request):
Field
is the base class for all fields. It does not include any default implementation for either serializing or deserializing data.ReadOnlyField
is a concrete implementation for read-only fields that simply returns the attribute value without modification.required
, allow_none
, allow_blank
and default
arguments.required
, allow_null
, allow_blank
and default
arguments.REST framework now has more explicit and clear control over validating empty values for fields.
Previously the meaning of the required=False
keyword argument was underspecified. In practice its use meant that a field could either be not included in the input, or it could be included, but be None
or the empty string.
We now have a better separation, with separate required
, allow_none
and allow_blank
arguments.
We now have a better separation, with separate required
, allow_null
and allow_blank
arguments.
The following set of arguments are used to control validation of empty values:
required=False
: The value does not need to be present in the input, and will not be passed to .create()
or .update()
if it is not seen.default=<value>
: The value does not need to be present in the input, and a default value will be passed to .create()
or .update()
if it is not seen.allow_none=True
: None
is a valid input.allow_null=True
: None
is a valid input.allow_blank=True
: ''
is valid input. For CharField
and subclasses only.Typically you'll want to use required=False
if the corresponding model field has a default value, and additionally set either allow_none=True
or allow_blank=True
if required.
Typically you'll want to use required=False
if the corresponding model field has a default value, and additionally set either allow_null=True
or allow_blank=True
if required.
The default
argument is also available and always implies that the field is not required to be in the input. It is unnecessary to use the required
argument when a default is specified, and doing so will result in an error.
The previous field implementations did not forcibly coerce returned values into the correct type in many cases. For example, an IntegerField
would return a string output if the attribute value was a string. We now more strictly coerce to the correct return type, leading to more constrained and expected behavior.