On Jun 16, 1:12 am, k-dj <kah...@gmail.com> wrote: > I'm just starting to use django and have run into a problem I have not > been able to solve. > > I have a model Item which stores, among other things, user_id. > Then I have a ModelForm. I want user_id to be a hidden field. After > searching around the web, I found out how to create a hidden field. > The template is rendered as I like it. > user_id is a hidden field with a value of 1. The problem is when I > submit the form, I get IntegrityError. "Column 'user_id' cannot be > null". > > but from the debug message I get back I can see that POST has all 3 > things I need. So maybe when a new form is created there is problem. > > views.py > @login_required > def newItem(request): > if not request.POST: > form = ItemForm() > return > render_to_response('manager/newItem.html',{'form':form}) > newForm = ItemForm(request.POST) > if newForm.is_valid(): > newForm.save() #problem here? > return HttpResponsePermanentRedirect('.') > > models.py > class Item(models.Model): > user = models.ForeignKey(User) > name = models.CharField(max_length=32) > description = models.CharField(max_length=128) > creation_date = models.DateField(auto_now=True) > > forms.py > class ItemForm(ModelForm): > user_id_wid = forms.HiddenInput(attrs={'value': 1}) > user_id = forms.IntegerField(widget=user_id_wid,required=False) > class Meta: > model = Item > fields = ['name', 'description']
You can't set 'value' as an argument to attrs. If you want to preset the value of a field, pass in an 'initial' dictionary on form instatiation: form = MyForm(initial={'user_id':1}) However a much better way is not to have the user_id field in the form at all, and set the correct value on the object on save. class itemForm(ModelForm): .... class Meta: model = Item exclude = ('user',) and in the view: if newForm.is_valid(): item = newForm.save(commit=False) item.user_id = 1 item.save() -- DR. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@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 -~----------~----~----~----~------~----~------~--~---