基于唯一密钥的Django连接模型
我遇到了一个无法加入基于外键的模型的情况。我想基于公共键(基本上是第三个表的外键)连接它们 看看代码:基于唯一密钥的Django连接模型,django,join,Django,Join,我遇到了一个无法加入基于外键的模型的情况。我想基于公共键(基本上是第三个表的外键)连接它们 看看代码: class Thread(models.Model): timestamp = models.DateTimeField(default=datetime.now) class Chat(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) message = models.Ch
class Thread(models.Model):
timestamp = models.DateTimeField(default=datetime.now)
class Chat(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
message = models.CharField(max_length=2000)
thread = models.ForeignKey(Thread, on_delete=models.CASCADE)
read = models.BooleanField(default= 0)
timestamp = models.DateTimeField(default=datetime.now)
class User_Thread(models.Model):
thread = models.ForeignKey(Thread, on_delete=models.CASCADE)
sender = models.ForeignKey(User, related_name='sender', on_delete=models.CASCADE)
reciever = models.ForeignKey(User, related_name='reciever', on_delete=models.CASCADE)
我想加入基于相同线程的聊天和用户线程模型。我怎样才能做到这一点?有什么想法吗?您可以通过以下方式获得给定
聊天的用户线程
s:
my_chat.thread.user_thread_set.all()
这将执行两个查询,并在Django/Python层进行连接。在查询中执行这样的连接将导致大量记录,这些记录可能包含大量重复数据,因此您不能使用这些记录
因此,您可以迭代聊天,例如列出User\u线程
s,其中包括:
for chat in chats:
for ut in chat.thread.user_thread_set.all():
print(''.format(chat.message, ut.receiver_id))
您可以通过以下方式获得给定聊天
的用户线程
s:
my_chat.thread.user_thread_set.all()
这将执行两个查询,并在Django/Python层进行连接。在查询中执行这样的连接将导致大量记录,这些记录可能包含大量重复数据,因此您不能使用这些记录
因此,您可以迭代聊天,例如列出User\u线程
s,其中包括:
for chat in chats:
for ut in chat.thread.user_thread_set.all():
print(''.format(chat.message, ut.receiver_id))