【问题标题】:How to query ManyToMany field using current user in django? [duplicate]如何在 django 中使用当前用户查询 ManyToMany 字段? [复制]
【发布时间】: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

【问题讨论】:

    标签: python django


    【解决方案1】:
     def get_queryset(self):
           # here i want to get only the messages in wich the current user is a receiver
            query_result = MessageModel.objects.filter(receivers=self.request.user
    ).order_by('received_date')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-01
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-01
      相关资源
      最近更新 更多