2017-10-11 1 views
0

J'apprends le framework django, et actuellement je suis confronté à un problème.django retourne l'enregistrement le plus récent de chaque utilisateur

Il existe deux modèles

class User(models.Model): 
    name = models.CharField(max_length=30) 
    ... 

class Action(models.Model): 
    user = models.Foreign(User) 
    action = models.CharField(max_length=30) 
    createTime = models.DateTimeField(default=django.utils.timezone.now) 

Chaque action de chaque utilisateur est inséré dans le modèle d'action, donc il y a beaucoup de dossiers de chaque utilisateur en action par différents CreateTime.

Maintenant, je voudrais énumérer la dernière action de chaque utilisateur, mais je n'ai aucune idée de l'implémenter.

Répondre

0

Vous pouvez interroger Action avec l'utilisateur que vous souhaitez informations sur, comme ce

actions = Action.objects.filter(user=selected_user).order_by("-createTime") 

Cela triera les actions des utilisateurs par date dans l'ordre décroissant, pour obtenir la dernière action:

actions.first() 
0

Essayez quelque chose comme:

from django.db.models import F, Max 


actions = Action.objects.annotate(
    most_recent=Max('user__action__createTime') 
).filter(createTime=F('most_recent'))