Как вывести набор запросов в Django? - PullRequest
0 голосов
/ 31 января 2019

Я создаю почтовый ящик, в котором вошедший в систему пользователь может видеть все свои сообщения, используя Django Channels 2.

Я хотел бы визуализировать набор запросов в InboxView, чтобы вернуть все объекты потока длязарегистрированный пользователь.

У меня проблемы с синтаксисом, а потоки не отображаются.

Если кто-то может мне любезно помочь, я был бы признателен.

Я хотел бы отобразить набор запросов в InboxView, чтобы вернуть все объекты потока для вошедшего в систему пользователя.

views.py

class InboxView(LoginRequiredMixin, ListView):
    template_name = 'chat/inbox.html'
    def get_queryset(self):
        return Thread.objects.by_user(self.request.user)

models.py

class ThreadManager(models.Manager):
    def by_user(self, user):
        qlookup = Q(first=user) | Q(second=user)
        qlookup2 = Q(first=user) & Q(second=user)
        qs = 
self.get_queryset().filter(qlookup).exclude(qlookup2).distinct()
        return qs


class Thread(models.Model):
    first        = models.ForeignKey(settings.AUTH_USER_MODEL, 
on_delete=models.CASCADE, related_name='chat_thread_first')
    second       = models.ForeignKey(settings.AUTH_USER_MODEL, 
on_delete=models.CASCADE, related_name='chat_thread_second')
    updated      = models.DateTimeField(auto_now=True)
    timestamp    = models.DateTimeField(auto_now_add=True)


    objects      = ThreadManager()

    def __str__(self):
        return f'{self.first}'

class ChatMessage(models.Model):
    thread      = models.ForeignKey(Thread, null=True, blank=True, 
on_delete=models.SET_NULL)
    user        = models.ForeignKey(settings.AUTH_USER_MODEL, 
verbose_name='sender', on_delete=models.CASCADE)
    message     = models.TextField()
    timestamp   = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f'{self.id}'

inbox.html

  {% for thread in object.thread_set.all?? %}
      <div class="chat_list">
            <h5>{{ thread.second }}<span 
class="chat_date">{{ thread.timestamp }}</span></h5>
            <p>{{ chat.message? }}</p>
      </div>
      {% endfor %}

1 Ответ

0 голосов
/ 31 января 2019

Тебе это совсем не нужно.Ваше представление уже основано на Thread, поэтому вы получаете object_list, содержащий набор запросов объектов Thread.

{% for thread in object_list %}

Синтаксис, который вы пробовали, был бы полезен, если у вас есть DetailView какой-либо другой модели и вы пытаетесьпроследить отношение этого объекта к его списку потоков.

...