What about: class CourseBook(ModelForm): course = ModelChoiceField(queryset=Course.objects.all(), widget=HiddenInput())
class Meta: model = CourseBooking and in your view: form = CourseBook(initial = {'course': course.pk}) Nuno On Wed, Mar 31, 2010 at 8:06 PM, phoebebright <phoebebright...@gmail.com> wrote: > Final approach: > in the forms.py excluded the courses foreign key field > in models.py made courses blank and nullable > didn't pass any initial values to the form > in the view, saved the form like this: > item = Courses.objects.get(pk=whatever) > obj = form.save(commit=False) > obj.course = item > obj.save() > > This doesn't feel very tidy to me, I think the form should have the > hidden values, but it works! > > > On Mar 31, 4:15 pm, phoebebright <phoebebright...@gmail.com> wrote: >> Brandon, Thanks for your suggestion. >> I tried passing it an ID, but as you say, I also have to override the >> save. What I don't understand is why it does it fine if the form >> includes the foreign key in a popup? They are both passing back >> integers after all. >> >> Also failed to get the save method working, tried to pass in the >> course instance, but it still ends up trying to save with the id of >> the course. Is it not using cleaned_data? >> >> def save(self, course=False, force_insert=False, >> force_update=False, commit=True): >> if course: >> self.cleaned_data['course'] = course >> return super(CourseBook, self).save(commit=commit) >> >> Any suggestions welcome as I've spent the whole afternoon on this - I >> won't go through the many other workarounds that havn't worked! >> >> Phoebe. >> >> On Mar 31, 4:02 pm, Brandon Taylor <btaylordes...@gmail.com> wrote: >> >> > Hi there, >> >> > Instead of using the course object in your initial data, which will >> > pass in the __unicode__ representation of the object, pass in the id: >> >> > form = CouseBook(initial = {'course': course.id}) >> >> > That should get you the numeric id, but you'll also need to override >> > your save method to get the course object to assign when you save your >> > CourseBook form, as you can't assign an integer (coming from your >> > hidden form field) to the value of a ForeignKey field on a model. >> >> > HTH, >> > Brandon >> >> > On Mar 31, 8:20 am, phoebebright <phoebebright...@gmail.com> wrote: >> >> > > Displayed fields resolve as expected, hidden fields cause errors. >> >> > > This works: >> >> > > in the model >> > > CourseBook has a foreign key to Course >> >> > > In the view: >> >> > > course = Course.objects.get(pk=whatever) >> > > form = CouseBook(initial = {'course': course}) >> >> > > in the Form: >> >> > > class CourseBook(ModelForm): >> > > class Meta: >> > > model = CourseBooking >> >> > > The web page now displays a picklist of courses with the initial value >> > > highlighted. I can now do a form.save() no problem. >> >> > > However, if I make the course a hidden field, which is what I want. >> >> > > class CourseBook(ModelForm): >> > > course = forms.CharField(widget=forms.HiddenInput()) >> >> > > class Meta: >> > > model = CourseBooking >> >> > > then when I come to save() I get a ValueError, unable to assign "My >> > > course" etc. as it tries to put the name of the course into the >> > > foreign key instead of a course instance. >> >> > > I can work around this putting a save method on the form, but it seems >> > > to me django should resolve this for me???? >> >> > > -- > 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. > > -- 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.