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 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 -~----------~----~----~----~------~----~------~--~---