Many many thanks for the response. I had tried that approach, but had no idea what was coming through in kwargs. I feel like 'kwargs' on most class objects needs more thorough documentation for the general users who refer primarily to the on-site docs. Even digging through some code, I simply had no idea.
This should provide a working fix for the sort of filtering I need to do. I hope that maybe I or some other person can provide some code to help simplify this amazingly common dilemma. Any models that group in logical relationships of 3 seem to always have this problem, and I'd love to have a simpler fix to write off in the docs. Tim On Oct 25, 8:28 pm, Matt Schinckel <matt.schinc...@gmail.com> wrote: > On Oct 24, 5:14 am, Tim Valenta <tonightslasts...@gmail.com> wrote: > > > I've been searching for a while on how to intercept querysets in > > forms, to apply a custom filter to the choices on both foreignkey and > > m2m widgets. I'm surprised at how there are so many similar questions > > out there, dating back to 2006. > > [snip] > > > The only solution I've seen has dealt with filtering by User foreign > > key (being that User is available in the request object in views), and > > that's primarily for non-Admin views. > > [snip] > > > I've been looking at the code for the above noted API method, > > formfield_for_foreignkey, and I really can't see a way to get > > references to an instance of the object being edited. I would need > > such a reference to successfully override that method and filter my > > queryset on this relationship. > > I too spent some time looking at formfield_for_foreignkey, and had no > luck. > > You can subclass ModelAdmin, and then limit the objects in the field's > queryset. > > ** admin.py ** > > class LocationAdminForm(forms.ModelForm): > def __init__(self, *args, **kwargs): > forms.ModelForm.__init__(self, *args, **kwargs) > location = kwargs.get('instance', None) > if location: > self.fields['contract'].queryset = Contract.objects.filter > (company=location.company) > > class LocationAdmin(admin.ModelAdmin): > model = Location > form = LocationAdminForm > > I also had to do something similar with Inlines, when I did the same > type of thing. This is not my exact code, but it is very close, and > suited toward your use case. > > Matt. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---