On Jun 16, 1:12 am, k-dj <[email protected]> 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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---