numpy/PILのデータはそのままだとdjangoのmodels.ImageFieldとして保存できません。
以下のようにInMemoryUploadedFileに変換してあげる必要があります。
image_fileをmodels.createなどで指定すればファイル保存できます。
from PIL import Image
import io
from django.core.files.uploadedfile import InMemoryUploadedFile
filename = ファイル名
image = Numpy配列
image = Image.fromarray(image)
image_io = io.ByteIO()
image.save(image_io, format="JPEG")
image_file = InMemoryUploadedFile(image_io, field_name=None, name=filename,
content_type="image/jpeg", size=image_io.getbuffer().nbytes,
charset=None)
djangoはmodels内でファイル操作する場合はUploadedFileを継承したクラスを使用する必要があります。
TemporaryUploadedFile, InMemoryUploadedFileあたりが該当します。