How to check whether there is threadone containing only sender(user 1) and recipient(user 2), and other users.
models.py
class Thread(models.Model):
user = models.ManyToManyField(User)
is_hidden = models.ManyToManyField(User, related_name='hidden_thread', blank=True)
class Message(models.Model):
thread = models.ForeignKey(Thread)
sent_date = models.DateTimeField(default=datetime.now)
sender = models.ForeignKey(User)
body = models.TextField()
is_hidden = models.ManyToManyField(User, related_name='hidden_message', blank=True)
I tried
>>> Thread.objects.filter(user=user1&user2)
>>> Thread.objects.filter(user=user1|user2)
>>> Thread.objects.filter(Q(user=user1) & Q(user=user2))
>>> Thread.objects.filter(Q(user=user1) | Q(user=user2)).distinct()
I want to check the stream with the specified users. Suppose user 1 wants to send a message to user 2. I want to first check if there is a thread between both users. If there is, get this thread or create a new one. How is this possible? What is the best way to do this. Please help me. Thanks.
And please tell me, what is the difference between |and &? Because I had different results with these two.
Edit:
>>> t1 = Thread.objects.get(id=1)
>>> t1
[<User: a>,<User: b>]
>>> t2 = Thread.objects.get(id=2)
>>> t2
[<User: a>,<User: b>,<User: c>]
>>> t3 = Thread.objects.get(id=3)
>>> t3
[<User:a>,<User: c>]
>>> t4 = Thread.objects.get(id=4)
>>> t4
[<User:a>,<User:b>]
, a b, . : t1 t4. , . .