On Fri, 2007-11-02 at 13:42 -0400, Karen Tracey wrote:
> On 11/2/07, Goutham D L <[EMAIL PROTECTED]> wrote:
> Hi,
> Iam having a problem in querying.
>
> i have a string called search_by which stores the name of one
> of my models.
> I want to call search_by.objects.all()
> But it is giving an error since search_by is a string and
> cannot be directly concatenated.
> Can someone help me get the query right?
>
> The way I found to do this when I was starting out:
>
> from django.db.models import get_model
> model = get_model('my_app_name', model_name_string)
>
> Then I can do model.objects().whatever...
>
> I found get_model by looking at the Django code, not in the
> documentation. I was a little concerned about using it and relying on
> undocumented Django internals but when I posted here querying if my
> use was legit (or if there was a better way) the feedback I got was
> that it was probably OK. That's how the core Django code transforms a
> string into a model object so it's not likely to disappear.
This is still probably a valid approach (there's lots of code that
relies on loading.get_model()).
Another way, though, is to use the ContentTypes application. The
lower-case version of the model name is stored in the 'model' field of
the ContentType model, so:
ct = ContentType.objects.filter(model=model_name_string.lower())
model_obj = ct.model_class()
does the same job. Okay, there's a database lookup here and it's
basically doing the same thing as Karen's solution under the covers. In
some situations, though, using ContentType might provide a nicer
interface, particularly if you need to do more than just filter on the
name.
Regards,
Malcolm
--
Remember that you are unique. Just like everyone else.
http://www.pointy-stick.com/blog/
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---