django - Setting all serializer fields to be required -
i have next serializers:
class addressserializer(serializers.modelserializer): class meta: model = address class clientserializer(serializers.modelserializer): address = addressserializer() class meta: model = client fields = ('id', 'email', 'address')
the models:
class address(models.model): street = models.charfield(max_length=50, default='') zip = models.charfield(max_length=5, default='') state = models.charfield(max_length=50, choices=states ,default='') suburb = models.charfield(max_length=50, default='') num = models.charfield(max_length=7, blank=true, default='') country = models.charfield(max_length=50, default='') ref = models.charfield(max_length=120, blank=true) class client(models.model): address = models.onetoonefield(address, null=true) email = models.emailfield(unique=true, default='')
the expected behaviour have addressserializer fields required, that's not case
when check options in client list api view address this:
"address": { "type": "field", "required": true, "read_only": false, "label": "address" }
but when check address list api view fields optional:
"street": { "type": "string", "required": false, "read_only": false, "label": "street", "max_length": 50 }, "state": { "type": "string", "required": false, "read_only": false, "label": "state", "max_length": 50 }, "zip": { "type": "string", "required": false, "read_only": false, "label": "zip", "max_length": 5 },
why fields supposed required not?
how can set fields required preferably without using extra_kwargs
argument?
if model_field.has_default() or model_field.blank or model_field.null: kwargs['required'] = false
the above excerpt drf 3.1.2 source showing how required
attribute of auto-generated serializer field of modelserializer
determined.
what have observed design. if want auto-generated serializer field have required = true
attribute, corresponding model field must neither have default value nor accept blank nor accept null.
Comments
Post a Comment