Я бы использовал аргумент commit = False, который создаст новый объект и назначит его без сохранения в вашей базе данных. Затем вы можете установить атрибут пользователя и вызвать save () без аргументов.
Например, вот как я назначил атрибут пользователя своему приложению блога.
в views.py
if form.is_valid():
# Create a new entry and assign to new_article.
new_article = form.save(commit=False)
# Set the new article attribute to the current user.
new_article.user = request.user
# Save to database now the object has all the required data.
new_article.save()
Вот полный код представления add_article, если это помогает.
@login_required
def add_article(request):
""" Add a new article. """
if request.method != 'POST':
# No data submitted, create a blank form.
form = AddArticleForm()
else:
# POST data submitted, process data.
form = AddArticleForm(request.POST, request.FILES)
if form.is_valid():
new_article = form.save(commit=False)
new_article.author = request.user
new_article.save()
return back_to_blog_page()
context = {'form': form}
return render(request, 'add_article.html', context)