mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-06 05:20:12 +03:00
Example code don't check for non existing fields
The behavior of DynamicFieldsModelSerializer when passing a non-existent (with a typo for example) field is confusing: * The field will not appear in the serializer output as expected * The error isn't caught anywhere (which can be frustrating to debug) This assert takes care of this. Maybe there is a better way to throw an exception than this, feedback welcome. BTW, I could imagine having this functionality in a mixin. What do you think about it? Let me know
This commit is contained in:
parent
0f33e63e10
commit
b5e8187e5d
|
@ -1074,6 +1074,11 @@ For example, if you wanted to be able to set which fields should be used by a se
|
||||||
# Drop any fields that are not specified in the `fields` argument.
|
# Drop any fields that are not specified in the `fields` argument.
|
||||||
allowed = set(fields)
|
allowed = set(fields)
|
||||||
existing = set(self.fields.keys())
|
existing = set(self.fields.keys())
|
||||||
|
|
||||||
|
# Catch fields that don't exist
|
||||||
|
non_existing = allowed - existing
|
||||||
|
assert len(non_existing) == 0, 'Invalid fields: {}'.format(non_existing)
|
||||||
|
|
||||||
for field_name in existing - allowed:
|
for field_name in existing - allowed:
|
||||||
self.fields.pop(field_name)
|
self.fields.pop(field_name)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user