Вы можете написать пользовательскую форму, которая будет проверять, существует ли автор в системе, использовать существующую, если нет, создавать новую с предоставленным именем.
class CustomForm(forms.ModelForm):
author = forms.CharField()
def save(self, commit=True):
author, created = Author.objects.get_or_create(name=self.cleaned_data['author'])
instance = super(CustomForm,self).save(commit=commit)
instance.author = author
if commit:
instance.save()
return instance
class Meta:
model=Book
Не уверен, что этот код работает, но я полагаю, он может объяснить мою идею.