I have a model:

class worker(models.Model): user = models.OneToOneField(User) age = models.IntegerField(blank=True, verbose_name='возраст') city = models.CharField(max_length=255, blank=True, verbose_name='город') skype = models.CharField(max_length=255, blank=True, verbose_name='skype') icq = models.CharField(max_length=20, blank=True, verbose_name='ICQ') 

There is a form

  class worker_form(ModelForm): class Meta: model = worker exclude = ('user', ) 

there is a view

  def add_worker(request): if request.method == 'POST': form = worker_form(request.POST) if form.is_valid(): form.user = request.user # Как сделать что бы подставился текущий юзер? form.save() return render_to_response('message.html', {}) 

If you do this, then the error crashes.

 worker_worker.user_id may not be NULL 

    1 answer 1

    Understood the problem was that

     exclude = ('user', ) 

    completely removes the field from the form (I thought it just does not display) deleted this line and wrote

      if request.method == 'POST': data = request.POST.copy() data.update({'user':request.user.id}) form = worker_form(data) if form.is_valid(): form.user= request.user form.save() 

    and it all worked