2010-06-04 4 views
0

Я хочу сделать функцию уведомления, и мне нужны поля из двух разных моделей. Как я могу получить доступ к этим полям? на мой взгляд уведомления я написал этуdjango доступ к переменным класса в представлении

data = Notices.objects.filter(last_login<date_follow) 

где last_login принадлежит модели класса пользователя и date_follow Следовать , но это не правильный и правильный способ получить доступ к этим переменным. Как я могу получить к ним доступ? Мне нужно сравнить две даты для получения уведомлений, которые не видели со времени его последнего входа.

Спасибо!

+0

Пожалуйста, разместите свой код модели для уведомлений и следуйте инструкциям, чтобы мы могли узнать больше, чтобы помочь. (Кроме того, это не переменные класса - вы говорите о переменных, принадлежащих объектам, которые являются экземплярами соответствующих классов.) –

ответ

2

В общем, вы хотите объединить две таблицы. В Django это возможно, если у вас есть внешний ключ из одной таблицы в другую. Вы, возможно, хотите/есть свои модели, как это:

class User(models.Model): 
    last_login = ... 

class Notice(models.Model): 
    ... 

class Follow(models.Model): 
    user = models.ForeignKey(User) 
    notice = models.ForeignKey(Notice) 
    date_follow = ... 

и ваш запрос

Notice.objects.filter(follow_set__date_follow__gt = follow_set__user__last_login) 

Я не протестировали этот запрос, но здесь «follow_set» автоматически создается Django и менеджер который возвращает обратный набор для внешнего ключа. Если вы хотите, вы можете использовать 'related_name' с вашим внешним ключом, чтобы выбрать другое имя здесь.

+0

ну, я все равно получаю сообщение об ошибке: глобальное имя 'relations_set__user__last_login' не определено, ошибка кажется вполне логично ... я ошибался? Спасибо! – dana

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