def none_if_empty_list(f): def func(*args, **kwargs): if len(args)>1 and args[1]=={}: args=[arg for arg in args] args[1]=None return f(*args, **kwargs) return func #use this decorator on your forms like this: class myForm(forms.Form): @none_if_empty_list def __init__(self, *args, **kwargs): forms.Form.__init__(self, *args, **kwargs) #and use the model this way: def myview(request): form=myForm(request.POST) #if the request is NOT post, the form will just be empty. If it is post and some values #are missing/wrong, you will get the errors like always. This avoids code linke this: def myview(request): if request.method=="POST": form=myForm(request.POST) else: form=myForm()