【发布时间】:2021-04-16 00:35:32
【问题描述】:
在我的 django 应用程序中,我有一个带有发送者(用户)和一些接收者(也是用户)的消息模型。 我想在 ListView 中显示所有将当前登录用户作为其接收者之一的消息(当前用户必须在接收者 ManyToMany 中) 我该怎么做? 这是我的代码:
class MessageModel(models.Model):
MESSAGE_TYPE_CHOICES = (
('draft', 'borrador'),
('new', 'nuevo'),
('red', 'leido'),
('deleted', 'borrado'),
)
subject = models.CharField(verbose_name="Asunto",max_length=50)
sender = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,
related_name='+', verbose_name='destinatario', editable=False, null=True, blank=True)
receivers = models.ManyToManyField(settings.AUTH_USER_MODEL, verbose_name="destinatarios")
received_date = models.DateTimeField(verbose_name="Fecha" ,auto_now_add=True)
state = models.CharField( verbose_name="Estado", max_length=50,blank=False, null=False, choices=MESSAGE_TYPE_CHOICES, default="new")
message_body = models.TextField(verbose_name="Mensaje")
@property
def get_receivers(self):
return self.receivers.all()
class Meta:
verbose_name = "Mensaje"
verbose_name_plural = "Mensajes"
def __str__(self):
return self.subject
class MailboxListView(LoginRequiredMixin, ListView):
model = MessageModel
template_name = 'mailapp/inbox.html'
context_object_name = 'messages'
def get_queryset(self):
# here i want to get only the messages in wich the current user is a receiver
query_result = MessageModel.objects.all().order_by('received_date')
return query_result
【问题讨论】: