django - Django 错误:“ForwardManyToOneDescriptor”对象没有属性“全部”
问题描述
所以我正在制作一个 django 项目,我有以下代码:
我的模型.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
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()
我的意见.py:
def Messages(request, *args, **kwargs):
Chats = Thread.objects.all()
User1 = Thread.first.all()
context = {
'content': Chats,
'user1': User1
}
return render(request, "chat/messages.html", context)
我不知道为什么我不能使用 all 方法,我想获取我的线程类模型的第一个对象,但是当我使用它时,会出现('ForwardManyToOneDescriptor' 对象没有属性'all'),有谁知道是什么继续?
解决方案
您尝试访问第一个对象的方式没有任何意义。应该Thread.objects.all().first()
不是Thread.first.all()
。
推荐阅读
- typescript - VsCode 任务事件不会触发
- c# - 将目录移动到当前目录 C#
- wordpress - 我怎样才能创建一个像这样的简单测验?
- php - 从 mysql db 和 php 获取多级 json
- google-cloud-dataflow - Java OutOfMemoryError 使用 PubsubIO
- javascript - es6 更新现有父对象的子对象的方法
- c# - 在期望的类构造函数中动态插入枚举类型作为参数
- ruby-on-rails - 查找带有“幽灵”孩子的记录
- python - 使用 Sklearn 中的 GridSearchCV:ValueError: setting an array element with a sequence
- c - 当我有正确的能力时无法打开 /proc/self/oom_score_adj