First time here? Check out the FAQ!
1

ManyToMany join table "question_followed_by" is empty.

We are integrating askbot into our existing django site. We found the join table question_followed_by is empty even when we have created 9 questions.

mysql> describe question_followed_by;
+-------------+---------+------+-----+---------+----------------+
| Field       | Type    | Null | Key | Default | Extra          |
+-------------+---------+------+-----+---------+----------------+
| id          | int(11) | NO   | PRI | NULL    | auto_increment |
| question_id | int(11) | NO   | MUL | NULL    |                |
| user_id     | int(11) | NO   | MUL | NULL    |                |
+-------------+---------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

mysql> select * from question_followed_by;
Empty set (0.00 sec)

mysql> select count(*) from question;
+----------+
| count(*) |
+----------+
|        9 |
+----------+
1 row in set (0.00 sec)

I'm wondering what would cause the join table to miss records?

Thanks a lot,

Alex

Alex Dong's avatar
11
Alex Dong
asked 2011-08-17 03:32:50 -0600
edit flag offensive 0 remove flag close merge delete

Comments

add a comment see more comments

2 Answers

0

Maybe because nobody follows questions yet? Click follow button on a question and check the table again.

Evgeny's avatar
13.2k
Evgeny
answered 2011-08-17 03:49:23 -0600
edit flag offensive 0 remove flag delete link

Comments

add a comment see more comments
0

Hi Evgeny,

Thanks for the quick reply. Yes, you are right, it's because no one is following the question yet. However, I am wondering why would I get this exception?

The site runs perfectly with django's "manage.py runserver". However, when we deployed it onto our staging server, which uses mod_wsgi, we're getting "Cannot resolve keyword 'followed_questions' into field" error.

Here is the error message and call stack. You can see that the ForeignKey and ManyToManyField in Question model are both missing in the list:

FieldError at /askbot/question/9/where-to-go-for-lunch Cannot resolve keyword 'followed_questions' into field. Choices are: _message_set, about, bronze, comment_comments, comment_flags, consecutive_days_visit_count, country, date_joined, date_of_birth, display_tag_filter_strategy, email, email_isvalid, email_key, email_tag_filter_strategy, first_name, gold, gravatar, groups, has_custom_avatar, id, ignored_tags, interesting_tags, is_active, is_staff, is_superuser, last_login, last_name, last_seen, location, logentry, new_response_count, password, questions_per_page, real_name, reputation, seen_response_count, show_country, silver, status, user_permissions, username, userprofile, websiteuserprofile, website

Here is the call stack:

/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py in get_response
/usr/local/lib/python2.6/dist-packages/django/utils/decorators.py in _wrapped_view
/var/www/askbot/hpsport/askbot/views/readers.py in question
/var/www/askbot/hpsport/askbot/forms.py in __init__
/usr/local/lib/python2.6/dist-packages/django/db/models/manager.py in all
/usr/local/lib/python2.6/dist-packages/django/db/models/fields/related.py in get_query_set
/usr/local/lib/python2.6/dist-packages/django/db/models/query.py in filter
/usr/local/lib/python2.6/dist-packages/django/db/models/query.py in _filter_or_exclude
/usr/local/lib/python2.6/dist-packages/django/db/models/sql/query.py in add_q
/usr/local/lib/python2.6/dist-packages/django/db/models/sql/query.py in add_filter
/usr/local/lib/python2.6/dist-packages/django/db/models/sql/query.py in setup_joins
Alex Dong's avatar
11
Alex Dong
answered 2011-08-17 04:07:26 -0600
edit flag offensive 0 remove flag delete link

Comments

Sounds like your python environment is different when you run under mod_wsgi. Probably python paths are not set the same way. Please take a look at mod_wsgi wiki for deployment under apache.
Evgeny's avatar Evgeny (2011-08-17 04:13:44 -0600) edit
Evgeny, that's exactly what we've suspected. However, the mod_wsgi's PYTHONPATH all look quite innocent. Since askbot monkey patched django's User object, will it be possible that it causes some problem similar to the one described here: http://bitkickers.blogspot.com/2010/04/django-manytomany-error-cannot-resolve.html. This is the django ticket associated with it: https://code.djangoproject.com/ticket/1796
Alex Dong's avatar Alex Dong (2011-08-17 04:30:53 -0600) edit
I have pinpointed the problem to be askbot/forms.py L644 the AnswerForm uses "question.followed_by.all()" to see whether it should set the default checkbox to be true or false. The "question.followed_by" statement is causing the above problem. Considering the fact that all other functions are working perfectly well, I do not think there are any major mod_wsgi setting errors. @Evgeny, how likely do you think it's the monkey-patching that's causing this problem?
Alex Dong's avatar Alex Dong (2011-08-17 04:53:08 -0600) edit
add a comment see more comments