David542
David542

Reputation: 110562

Pass variable to a form

Is there a way to do the following in one line in addition to the form definition, instead of three? I find myself doing something like this quite frequently --

form = EmploymentForm(data=request.POST or None, request=request)

employment_object = form.save(commit=False)
employment_object.user = profile
employment_object.save

Thank you.

Can do this:

form = EmploymentForm(data=request.POST or None, request=request)
form.instance.user = profile
...

Upvotes: 1

Views: 163

Answers (2)

Samuele Mattiuzzo
Samuele Mattiuzzo

Reputation: 11046

No there isn't, afaik. I know i'll be getting a -1 for this answer.

Upvotes: 0

Cat Plus Plus
Cat Plus Plus

Reputation: 130004

Well, you could refactor it into a function.

def save_with_user(form, user):
    obj = form.save(commit = False)
    obj.user = user
    obj.save()

# ...
form = EmploymentForm(data=request.POST or None, request=request)
save_with_user(form, profile)

Upvotes: 2

Related Questions