2017-05-23 8 views
0

私のモデルは次のようになります。DjangoのORMフィルタリングは

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) 

私の見解:これは、一人一人が、すべてのノートがリストされたノートのリストを返します

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') 

、内掲載されていますdate_added__range。その日付範囲内の他の基準に合致する各人の最後のメモを取得するにはどうすればよいですか?

答えて

1
Note.objects.filter(query).exclude(~Q(owner=request.user)).values('owner', 'action', 'person').first() 

は または

Note.objects.filter(query).exclude(~Q(owner=request.user)).values('owner', 'action', 'person').last() 

は、フィールド名で

Note.objects.filter(query).exclude(~Q(owner=request.user)).values('owner', 'action', 'person').latest('field_name') 
+0

おかげで多くのことをクエリセット

や最新の最後のオブジェクトを返しますクエリセットの一番上のオブジェクトを返します。 。私が見ることで、これは最後のオブジェクトだけを返します。私は各人のために最後のオブジェクトを取得したいと思います。だから、 ような何か:今の間DATE_ADDEDノート から '選択*と5h3z4n @ person'' –

+0

BY」 GROUPをfourteen_days_agoはhttps://docs.djangoproject.com/en/1.11/topics/db/を見て集計/ –

+0

@ pawel.adこれは私が必要なもののように見えます!ありがとう –

関連する問題