I have done a ModelForm adding some extra fields that are not in the model. I use these fields for some calcualtions when saving the form.
The extra fie
This answer may be too late for the original poster, but I thought it might help others. I had the same problem and I did notice that self.cleaned_data('artist_id') can be accessed in the clean() method, but not in the clean_artist().
When I added the extra fields in the 'fields' declaration of Meta, then it worked.
class Meta:
model = Music
fields=[..., 'artist_id']
You should be able to access the self.cleaned_data('artist_id') in clean_artist().