2015-11-19 1 views
0

В приложении Django с именем ссылки, в один момент я бегу следующий код на QuerySet, и получаю ошибку: колонка user_id не существует:SQL Синтаксическая ошибка, при разработке Django QuerySet с использованием дополнительных

date = datetime.now()-timedelta(hours=1) 
groups = Group.objects.filter(private='0').extra(select = { 
    "views" : """ 
    SELECT COUNT(*) 
    FROM links_grouptraffic 
    JOIN links_group on links_grouptraffic.which_group_id = links_group.id 
    WHERE links_grouptraffic.visitor_id = user_id 
    AND links_grouptraffic.time > %s """}, select_params=(date,), 
).order_by("-views") 

user_id в этом коде является ссылкой на Django.contrib.authuser. Я никоим образом не переоценил это.

Другие вещи, которые я пробовал:

Если я изменить user_id к user.id, я получаю сообщение об ошибке: ошибки синтаксиса или вблизи «» Это брошено со ссылкой на линии WHERE links_grouptraffic.visitor_id = user_id.

Если меняю user_id в links_user.id, я получаю ошибку: отсутствует FROM-п запись для таблицы «links_user»

Если изменить user_id к user (и соответственно, visitor_id к visitor), я получаю ошибку: колонка links_grouptraffic.visitor не существует (visitor является внешним ключом к user, следовательно, должно быть visitor_id).


Похожие модели:

class Group(models.Model): 
    topic = models.TextField(validators=[MaxLengthValidator(200)]) 
    owner = models.ForeignKey(User) 
    private = models.CharField(max_length=5, default=0) 
    created_at = models.DateTimeField(auto_now_add=True) 

class GroupTraffic(models.Model): 
    visitor = models.ForeignKey(User) 
    which_group = models.ForeignKey(Group) 
    time = models.DateTimeField(db_index=True, auto_now_add=True) 

Как это исправить?

+0

Вы уверены, что Ваш 'модель group' имеет' user_id' столбец? –

+0

@ TomaszJakubRup: модель группы или модель групповой трафик? –

+0

это: 'groups = Group.objects.filter (private = '0')' –

ответ

1

owner_id не user_id:

SELECT COUNT(*) 
    FROM links_grouptraffic 
    JOIN links_group on links_grouptraffic.which_group_id = links_group.id 
    WHERE links_grouptraffic.visitor_id = owner_id 
    AND links_grouptraffic.time > %s 
+0

Легко, как пирог, спасибо! –

+0

Не забудьте [проголосовать] (http://stackoverflow.com/help/why-vote). Голосование способствует хорошим ответам. –

Смежные вопросы