IMO model is better place for such validation. What if we want to use this model in another form?

Try sth like this:
```
def clean(self):
    if self.type.by_warehouse and not self.warehouse:
        raise ValidationError(_("Warehouse must be chosen"))
```