Postgres function json_array_elements does not found while django's tests

294 views
Skip to first unread message

Volodymyr B

unread,
Nov 14, 2014, 5:14:18 PM11/14/14
to django...@googlegroups.com
Hi all


I have class method in django model which is use json_array_elements function.

In case when it performs by browser it works fine.
But in tests it fails with:
 python manage.py test

Traceback (most recent call last):

  File "path_to_project/dj_server/model_animations/tests.py", line 94, in test_cteating

    response_first = model_animations.views.get_animations_list(request, jsonData['groups'][0])

  File "path_to_project/dj_server/model_animations/views.py", line 37, in get_animations_list

    for model_anim in listArray:

  File "/Library/Python/2.7/site-packages/django/db/models/query.py", line 1535, in __iter__

    query = iter(self.query)

  File "/Library/Python/2.7/site-packages/django/db/models/sql/query.py", line 76, in __iter__

    self._execute_query()

  File "/Library/Python/2.7/site-packages/django/db/models/sql/query.py", line 90, in _execute_query

    self.cursor.execute(self.sql, self.params)

  File "/Library/Python/2.7/site-packages/django/db/backends/utils.py", line 65, in execute

    return self.cursor.execute(sql, params)

  File "/Library/Python/2.7/site-packages/django/db/utils.py", line 94, in __exit__

    six.reraise(dj_exc_type, dj_exc_value, traceback)

  File "/Library/Python/2.7/site-packages/django/db/backends/utils.py", line 65, in execute

    return self.cursor.execute(sql, params)

ProgrammingError: function json_array_elements(text) does not exist

LINE 1: ...on_name FROM model_animations_model, json_array...

                                                             ^

HINT:  No function matches the given name and argument types. You might need to add explicit type casts.



in models.py

    @classmethod

    def animations_list(self, group_id):

        if group_id:

            try:

                listArray = ModelAnimationList.objects.raw(('SELECT * FROM model_animations_model, json_array_elements(animated_groups) AS data WHERE \'"%s"\' = data::text' %group_id))

                return listArray

            except:

                pass

        return None


in views.py

def get_animations_list(request, group_id):

    ...


    listArray = ModelAnimationList.animations_list(group_id)

    if listArray:

        for model_anim in listArray:

            if model_anim:

                anim_dict = { 'a_id'  : model_anim.id, 'a_name' : model_anim.animation_name }

                result_anim_list.append(anim_dict)


    ...


in tests.py

    request = HttpRequest()

    response_first = model_animations.views.get_animations_list(request, groupid)


Installed:
python 2.7
Django 1.7.1
Postgres 9.3.5
psycopg2 2.5.4
Mac 10.10 Yosemite

Question on stack

It was works on Mac OS X 10.9.5. 
But not sure about other software. 

And don't know in which software or tool could be bug.

Volodymyr B

unread,
Dec 15, 2014, 5:16:14 PM12/15/14
to django...@googlegroups.com
Solved

Mistake in query json_array_elements(animated_groups)

Needs change to this: json_array_elements(animated_groups::json)

Reply all
Reply to author
Forward
0 new messages