a-HA.  Simple.  I had a suspicion this would be a python solution
rather than Django-specific solution.

Thanks!

On Oct 27, 11:14 am, Daniel Roseman <dan...@roseman.org.uk> wrote:
> On Oct 27, 10:48 am, James Harrison Fisher <jameshfis...@gmail.com>
> wrote:
>
>
>
> > Hi,
>
> > I've recently come across something that's stumped me.  I am creating
> > a 'shortcut' function for easier creation of add/edit views.  This
> > function needs to make a query on a model in the simple form:
>
> > model.objects.get(field_name=value)
>
> > where the variables "model", "field_name", and "value" are passed to
> > the function at runtime rather than hard-coded.
>
> > This would be fine if I knew that field_name was the primary key, as I
> > could just use (pk=value).  Problem is, I'm not (necessarily) working
> > with a primary key, and I obviously can't pass field_name, which is a
> > string, as a the name of a keyword argument.  So I would like to do
> > something like the following:
>
> > def genericView(model, identifier_field, identifier_value):
> >   model.objects.get(identifierfield, identifier_value)
> >   [...]
>
> > But to the best of my knowledge get() doesn't accept positional
> > arguments in such a way, and I can't find a likely method elsewhere
> > that might do what I want.
>
> > So:
> > 1. Do I have a mental block/am I being amazingly stupid? or,
> > 2. is there indeed a method to do what I want?, or
> > 3. do I have to fall back to SQL?
>
> > Thanks in advance,
>
> > James
>
> You can do use a dictionary to pass positional arguments, with the **
> trick:
> model.objects.get(**{identifierfield: identifier_value})
>
> --
> 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to