models
1 2from django.db import models 3from django.contrib.auth import get_user_model 4# Create your models here. 5User = get_user_model() 6 7#This is for making friends 8class Contact(models.Model): 9 user = models.ForeignKey(User, related_name='friend', on_delete=models.CASCADE) 10 friends = models.ManyToManyField('self', blank=True) 11 12 13 def __str__(self): 14 return self.user.name 15 16 17#This is for new Messages 18class Message(models.Model): 19 contact = models.ForeignKey(Contact, related_name='message', on_delete=models.CASCADE) 20 content = models.TextField() 21 timestamp = models.DateTimeField(auto_now=True) 22 23 def __str__(self): 24 return self.contact.user.name 25 26 27#This is for fetching messages 28class Chat(models.Model): 29 participants = models.ManyToManyField(Contact, related_name='chats') 30 messages = models.ManyToManyField(Message, blank=True) 31 32 33 def last_30_messages(self): 34 return self.messages.objects.order_by('-timestamp').all()[:30] 35 36 37 def __str__(self): 38 return "{}".format(self.pk)
views
1 2from django.shortcuts import render, get_object_or_404 3from .models import * 4 5def get_last_30_messages(ChatID): 6 print('ChatID::', ChatID) 7 chat = get_object_or_404(Chat, id=ChatID) 8 #この時点ではprint(chat) => 1 で pkがちゃんと返ってくる 9 return chat.messages.order_by('-timestamp').all()[:30] 10 #chat.messages.order_by('-timestamp').all()[:30] が空 11
Messagesのところを開いて確認しても確かにある。中身を確認してもちゃんとcontent, name, timestampはいずれのmessageにありました。
ちなみに同じChatIDで
views
1from django.shortcuts import render, get_object_or_404 2from .models import * 3 4def get_last_30_messages(ChatID): 5 print('ChatID::', ChatID) 6 chat = get_object_or_404(Chat, id=ChatID) 7 return chat.participants.order_by('-timestamp').all()[:30] 8#messages => participants
とするとちゃんとparticipantsは返ってくるのですが、messagesにした途端、空のquerysetが返ってきます。
写真にあるmessagesをfetchしたいのですが、何かこのようなことが起こる原因があるのでしょうか。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。