Это не идеальный вариант, но он работает для записи файла (временного) на диск и затем сохранения его в FileField (после этого необходимо удалить временный файл, которого нет в коде)
from reportlab.pdfgen import canvas
from django.core.files import File
import codecs
class SomeView(FormView):
form_class = SomeForm
template_name = 'sometemplate.html'
def form_valid(self, form):
item = form.save(commit=False)
# create PDF
filename = "somefile.pdf"
p = canvas.Canvas(filename)
p.drawString(100, 100, "Hello world.")
p.showPage()
p.save()
with codecs.open('somefile.pdf', "r",encoding='utf-8', errors='ignore') as f:
item.file.save('somefile.pdf',File(f))
# save form
item.save()
return super(SomeView, self).form_valid(form)