[Pulp-dev] Required fields for models at the DB level

Simon Baatz gmbnomis at gmail.com
Mon Dec 2 23:52:12 UTC 2019


On Mon, Dec 02, 2019 at 03:53:06PM -0500, Brian Bouterse wrote:
>    If anyone has concerns with us enabling Model validation by default on
>    all models please let us know soon.

I don't know (yet) if I have concerns, but DRF seems to have, see
https://www.django-rest-framework.org/community/3.0-announcement/#differences-between-modelserializer-validation-and-modelform

According to DRF's design, all validation logic should be at one
place, which is the serializer.  This seems to be a controversial
issue, see e.g. 
https://github.com/encode/django-rest-framework/issues/3144.  From
that issue:

What happens in the case where in your models you are forcing a
full_clean (perhaps by including it in the save method)?  Will
serializers know how to handle an exception from an explicit
full_clean?

And Tom Christie's answer:

I'd recommend that application level validation should generally
happen prior to save, not during it.  Personally I'd avoid
full_clean, and instead ensure that state changing operations on
model instances are only ever made via method calls that can provide
a boundary that ensures that only valid state changes may ever be
made by the rest of the application.



We need to be aware that we are leaving the path recommended by DRF
if we implement this proposal and mix Django validation and DRF
validation.  Unfortunately, I don't know what the alternative is. 
Using DRF serializers to construct all model instances looks clumsy
when it comes to relations.





More information about the Pulp-dev mailing list