Tim,

Here is how I do it with a different query.  Using the fetchall() and
getting it into a list works nicely.  I know that there should be a
better way to do this so that we're not making a list twice - but this
works:

            query = """SELECT b.created_on, SUM(a.vote)
                            FROM %s a JOIN %s b
                            ON a.created_on <= b.created_on
                            ON a.object_id = b.object_id
                            ON a.content_type_id = b.content_type_id
                            WHERE a.object_id = %s
                            AND a.content_type_id = %s
                            GROUP BY 1""" % (
                connection.ops.quote_name(self.model._meta.db_table),
                connection.ops.quote_name(self.model._meta.db_table),
                obj._get_pk_val(),
                ctype.id,
                )
            cursor = connection.cursor()
            cursor.execute(query)
            result_list = []
            for row in cursor.fetchall():
                result_list.append(row)

On Mar 10, 5:19 pm, timc3 <t...@timc3.com> wrote:
> Hi,
>
> I have built my models and so forth, but I have the need to check
> whether the user requesting an instance or set of instances from the
> database has permission to do so.
>
> For this I have a stored procedure (saved procedure) in the database
> that when I give it a user id, it then returns the item if I am
> allowed it. Its a stored procedure because its not possible to do it
> in a SELECT, it potentially would open up a lot of database requests
> if I wanted to do it straight from the App server.
>
> I want to use this in Django, and I thought about using a Manager on
> the model like so:
>
> class MediaItemManager(models.Manager):
>     def get_perm(self, *args, **kwargs):
>         from django.db import connection
>         cursor = connection.cursor()
>         cursor.execute("""
>                     SELECT * FROM permfindernew(2, 132);
>                     """)
>         row = cursor.fetchone()
>         return row
>
> Problem comes in that although I return what I want (I will replace 2,
> 132 with the correct args when I am done), its not in a format of a
> queryset or anything else that I can see how I can use.
>
> Another way I could do this is to get the stored procedure to give me
> back a true/false and then do another query if I have got true back.
> This only hits the database twice, but I would like to just return a
> row if possible.
>
> Is there a way to turn what I get back from the database into
> something I can then use in a template:
>
> (132,
>  u'Tsunami_by_hokusai_19th_century.jpg',
>  u'Tsunami_by_hokusai_19th_century.jpg',
>  u'',
>  u'',
>  datetime.datetime(2009, 2, 17, 16, 54, 38, 892350),
>  None,
>  u'image-jpg',
>  u'c4a6afe0a71e3632',
>  3,
>  u'[]',
>  5,
>  False,
>  False,
>  False,
>  True,
>  True,
>  1,
>  u'',
>  1,
>  None,
>  False,
>  1,
>  "'19th':4,9 'hokusai':3,8 'tsunami':1,6 'century.jpg':5,10")
>
> Thanks,
>
> Tim.
--~--~---------~--~----~------------~-------~--~----~
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