作業中のメッセージングモジュール用に、これら2つのクラスがあります。会話は参加者のグループ(2人以上)によって表されるという考え方です。私が見つけようとしている目的の会話には次の参加者がいるというロジックで会話を検索する方法を見つけるのに苦労しています。私は試しConversation.objects.filter(participants__in=[p1, p2])
ましたが、これはORスタイルのクエリを実行します。p1は参加者であるか、p2は参加者です。p1とp2が欲しいのですが...pNは参加者です。何か助けはありますか?
class Conversation(models.Model):
date_started = models.DateTimeField(auto_now_add=True)
participants = models.ManyToManyField(User)
def get_messages(self):
return Message.objects.filter(conversation=self)
def new_message(self, sender, body):
Message.objects.create(sender=sender, body=body, conversation=self)
self.save()
class Message(models.Model):
sender = models.ForeignKey(User)
body = models.TextField()
date = models.DateTimeField(auto_now_add=True)
conversation = models.ForeignKey(Conversation)
def __unicodde__(self):
return body + "-" + sender