Skip to content

Instantly share code, notes, and snippets.

@kezabelle
Created February 3, 2016 09:01
Show Gist options
  • Save kezabelle/57973573cd205e726592 to your computer and use it in GitHub Desktop.
Save kezabelle/57973573cd205e726592 to your computer and use it in GitHub Desktop.
form class generator factory, because playing around in __init__ is grim.
def generator(**kwargs):
display_fields = ['field1', 'field2']
qs = Model.objects.all()
if 'instance' in kwargs and kwargs['instance']:
qs = Model.objects.filter(type=kwargs['instance'].object_type)
if 'request' in kwargs and kwargs['request']:
if kwargs['request'].user.is_anonymous():
display_fields.remove('field2')
class MyForm(ModelForm):
myfield = ModelChoiceField(queryset=qs)
class Meta:
fields = display_fields
return MyForm
form = generator(data=request.GET, files=None, request=request)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment