The use-case is when you want/commit to providing the value yourself (in say `pre_save`) if it's not provided by to the serialiser. 

For `null=False` model fields we have three cases:

1. I'm required to provide it as part of the serialiser data. — "The Normal Case"
2. I exclude it from the serialiser (or mark it read-only) provide it implicitly (in say `pre_save`) — "The Current-User-Owns-This Case"
3. I can provide it if I wish but don't have to — "The Current Case"

The essence of #1257 is that we were only covering the first two. 

#1405 tests that the __serialiser__ doesn't require you to submit a value in The Current Case — it doesn't check that you've correctly implemented (say) `pre_save` to ensure the model will pass validation when you try and save it — but that's a bit out of scope — it's a programming error that it's up to you to avoid. 

#1405 incorrectly removes the validation (at the serialiser level) in all cases — rather than just when there's no data. So it's only half a fix. 

Making sure that the field is not excluded when there is data should be the rest. (i.e. All the tests, including that in #1459, should pass.)

I have two issues here: 

1. I'm not sure of the "is there data for this field" test. It should be `if self.init_data.has_attr(...)` for the field. But I fear edge-cases like nested serialisers and such. And, related...
2. There's a number of boolean conditions combined in this conditional which makes it hard to see through instantly. If we put the "Don't not exclude if the field is required OR if there is data for it" last do we thereby eliminate the need to do anything more complex than the `has_attr` in 1?

(Sorry, it's been a long day.)