0
Mon modèle ressemble à ceci:Django ORM Filtrage
Person(model.Models):
name = model.CharField(max_length=32)
date_added = models.DateTimeField(auto_now_add=True)
Note(model.Models):
person = model.ForeignKey(Person)
action = model.CharField(max_length=32, default='call)
date_added = models.DateTimeField(auto_now_add=True)
owner = model.ForeignKey(User)
mon avis:
def get_working_persons(self):
relevant_actions = ['call', 'meeting', ...]
query = Q(action__in=relevant_note_actions) | Q(date_added__range=[fourteen_days_ago, now])
get_current_person_notes = Note.objects.filter(query).exclude(~Q(owner=request.user)).values('owner', 'action', 'person')
Cela renvoie une liste de notes, où chaque personne a toutes les notes énumérées, qui sont affichées dans le date_added__range. Comment puis-je obtenir la dernière note pour chaque personne dans cette plage de dates, qui répond aux autres critères?
Merci beaucoup . D'après ce que je peux voir, cela retournera le dernier objet seulement. Je voudrais obtenir le dernier objet pour chaque personne. donc quelque chose comme: 'Select * de la note où DATE_ADDED entre maintenant et fourteen_days_ago GROUP BY person'' –
@ 5h3z4n jeter un oeil à https://docs.djangoproject.com/en/1.11/topics/db/ agrégation/ –
@ pawel.ad cela ressemble à ce dont j'ai besoin! Merci –