You probably want to change the attributes of the model object directly. "If you call save() with commit=False, then it will return an object that hasn't yet been saved to the database." Source: http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-method
So I would do something like this: def my_change_view(request, id): #get instance based on id here #.... if request.method == 'POST': form = MyModelForm(request.POST, instance=instance) if form.is_valid(): obj = form.save(commit=False) obj.created_by = request.user obj.save() form.save_m2m() return redirect('/somewhere') else: form = MyModelForm(instance=instance) return render_to_response..... I hope this helps. Remember to call form.save_m2m() if your model has any many-to-many relations. I also would suggest to (re-)read django's excellent documentation forms. On Mar 21, 10:00 pm, Cesar Devera <cesardev...@gmail.com> wrote: > hi. > > I have a ModelForm based on an Model like this: > > class MyModel(models.Model): > attr1 = models.CharField() > attr2 = models.CharField() > attr3 = models.CharField() > createdby = models.ForeignKey(User, related_name='createdby', > db_column='createdbyid') > calculatedfield = models.CharField() > > class MyModelForm(ModelForm): > class Meta: > model = MyModel > > the attribute fields attr1, attr2 and attr3 are properly shown on my > html page, and correctly restored on my server-side view like this: > > def save(request,id): > user = request.user > try: > mymodel = MyModel.objects.get(pk=id) > except: > mymodel = MyModel() > form = MyModelForm(request.POST, instance=mymodel) > > now comes the problem: I want to set the createdby attribute only on > my view, AFTER the html page Post. I want to set the createdby and any > other calculated field on server side. is it possible? > > I tried: > > form['createdby'] = request.user > > but it didn't seem to work. > > this field (createdby) is NOT NULL and so I wouldn't like to set it to > NULL, save the form with form.save() and later recover the entity > again and manipulate the remaining fields... > > any ideas? > > thanks in advance. -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.