所以我在Django项目中有这些模型,并且我试图获取user2
变量或模型的其他用户
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
def get_or_new(self, user, other_username): # get_or_create
username = user.username
if username == other_username:
return None
qlookup1 = Q(first__username=username) & Q(second__username=other_username)
qlookup2 = Q(first__username=other_username) & Q(second__username=username)
qs = self.get_queryset().filter(qlookup1 | qlookup2).distinct()
if qs.count() == 1:
return qs.first(), False
elif qs.count() > 1:
return qs.order_by('timestamp').first(), False
else:
Klass = user.__class__
user2 = Klass.objects.get(username=other_username)
if user != user2:
obj = self.model(first=user, second=user2)
obj.save()
return obj, True
return None, False
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 Messages(request, *args, **kwargs):
Chats = Thread.objects.by_user(request.user)
other_username = kwargs.get("username")
other_user = Thread.objects.get_or_new(request.user, other_username)
context = {
'content': Chats,
'chatname': other_user
}
return render(request, "chat/messages.html", context)
但是当我尝试获取其他用户时,出现标题错误。有人知道发生了什么吗?
谢谢您的帮助!
答案 0 :(得分:0)
通过查看模型,似乎user2变量是第二个对象,要获取第二个对象,您只需要使用您创建的内容上下文,然后在模板中循环使用{%进行内容%的聊天} {{chat.second}},这将为您提供第二个用户,而不是您所有对象的用户