Brian,

Are we to infer, by extrapolating, that since it appears that the
coupling of the model definition and the form definition is
undesirable passing the help_text argunment to a form will eventually
not be done at the model?  Instead, are we going to have to use a
formfield_callback to pass the help_text to a form_for_model, for
example?

-rm

On Nov 2, 5:11 pm, Brian Rosner <[EMAIL PROTECTED]> wrote:
> What you really need is to use the formfield_callback argument to
> form_for_instance.  This allows you to override the default fields
> that are returned for a given field in the model [1].  There is an
> open bug, [2], that will allow for an easier way of overriding the
> queryset that is ultimately rendered as the options.  Until then you
> will just need to subclass ModelChoiceField and re-implement the
> choices property to use a custom queryset that does the filtering you
> are describing.
>
> [1]http://www.djangoproject.com/documentation/newforms/#overriding-the-d...
> [2]http://code.djangoproject.com/ticket/4787
>
> On Nov 1, 3:15 pm, rm <[EMAIL PROTECTED]> wrote:
>
> > I know this is a painful subject.  I have spent a couple of days
> > trying to figure this out, and I am almost there. (I think. :)
>
> > Here is the model (simplified to bare bones):
>
> > class away(models.Model):
> >     contact = models.ForeignKey(Contact, verbose_name="Name of person
> > away", limit_choices_to= {'is_staff':True}, db_column='contact')
>
> > As you can see Contact is another model being referenced here which
> > has a field named "is_staff" that I want to use to filter out some
> > contacts so that they do not display as options in my form to add or
> > edit away instances. Unfortunately, the filter seems to only affect
> > the way the field is displayed in the admin forms, not on regular
> > forms.
>
> > This is how the start of my view to edit away instances looks like:
>
> > def away_edit(request, away_id):
> >     aw = get_object_or_404(away, id=away_id)
> >     aw_form = forms.form_for_instance(aw)
>
> > When displaying that form the 'contact' field displays as a dropdown
> > list, but it includes the choices I wanted filtered out.  So, after a
> > lot of searching, I found this post which seems to be addressing the
> > same issue:
>
> >http://groups.google.com/group/django-users/browse_thread/thread/cbbf...
>
> > However, I can't make it work.  This is how I have translated the
> > advice to my view:
>
> > def away_edit(request, away_id):
> >     aw = get_object_or_404(away, id=away_id)
> >     aw_form = forms.form_for_instance(aw)
> >     aw_form.base_fields['contact']=forms.ChoiceField(choices=[(obj.id,
> > obj.name) for obj in  Contact.objects.filter(is_staff=True)])
>
> > When I do that, the form displays correctly and it actually does
> > filter out the choices as I want.  But, when I submit the form I get
> > an error telling me that "away_away.contact may not be NULL".
>
> > Can someone please explain to me why it gives me that error?


--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to