2010-06-04 5 views
0

Je veux faire une fonction de notification, et j'ai besoin de champs de 2 modèles différents. comment puis-je accéder à ces champs? à mon avis de notification i a écrit cedjango accéder à des variables de classe dans une vue

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

où last_login appartient à la classe de modèle utilisateur et date_follow à suivre mais ce n'est pas une bonne façon correcte et d'accéder à ces variables. Comment puis-je y accéder? J'ai besoin de comparer les deux dates pour réaliser les notifications qu'on ne voyait pas depuis son dernier login.

Merci!

+0

S'il vous plaît poster votre code modèle pour les notifications et suivre afin que nous puissions en savoir plus pour être en mesure d'aider. (De plus, ce ne sont pas des variables de classe - vous parlez de variables appartenant à des objets, qui sont des instances des classes concernées.) –

Répondre

2

En général, vous souhaitez joindre deux tables. Dans Django, cela est préférable si vous avez une clé étrangère d'une table à l'autre. Vous voulez peut-être/ont vos modèles comme celui-ci:

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

class Notice(models.Model): 
    ... 

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

et votre requête

Notice.objects.filter(follow_set__date_follow__gt = follow_set__user__last_login) 

Je n'ai pas testé cette requête, mais ici « follow_set » est automatiquement créé par Django et est un gestionnaire qui renvoie l'ensemble inverse pour la clé étrangère. Si vous le souhaitez, vous pouvez utiliser 'related_name' avec votre clé étrangère pour choisir un autre nom ici.

+0

bien, je reçois toujours une erreur: le nom global 'relations_set__user__last_login' n'est pas défini l'erreur semble assez logique ... avais-je tort? Je vous remercie! – dana

Questions connexes