Instead off writing an __init__ for the form class, I ended up with this get_form()
def get_form(self, form_class=None):
form = self.get_form_class()
self.object = Account.objects.get(pk=pk)
form_instance = form(instance=self.object)
self.filter_modelChoices(form_instance)
return form_instance
def filter_modelChoices(self, form_instance):
"""
Changes the model choice fields to be correctly filtered
as required by request.user.
"""
opts = self.model._meta
for formfield_name in form_instance.fields:
formfield = form_instance.fields[formfield_name]
if isinstance(formfield, ModelChoiceField):
[modelfield] =
[f for f in opts.fields if
f.name == formfield_name]
qs = userVisibleFilterQS(
False,
modelfield.related_model())
if qs:
formfield.queryset = formfield.queryset.filter(qs)