/'QuerySet'对象上的AttributeError没有属性'users'

如何解决/'QuerySet'对象上的AttributeError没有属性'users'

我不知道为什么会收到这个错误,我是Django的新手,我进行了很多研究,但在给我答案的解释尽可能多时,我没有找到答案,但是如果您不想没问题 谢谢, 这是我的Views.py

from django.views.generic import TemplateView
from django.shortcuts import render,redirect
from django.contrib.auth.models import User

from home.forms import HomeForm
from home.models import Post,Friend


class HomeView(TemplateView):
    template_name = 'home/home.html'

    def get(self,request):
        form = HomeForm()
        posts = Post.objects.all().order_by('-created')
        users = User.objects.exclude(id=request.user.id)
        friend = Friend.objects.filter(current_user=request.user)
        friends = friend.users.all()

        args = {
            'form': form,'posts': posts,'users': users,'friends': friends
        }
        return render(request,self.template_name,args)

    def post(self,request):
        form = HomeForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)
            post.user = request.user
            post.save()

            text = form.cleaned_data['post']
            form = HomeForm()
            return redirect('home:home')

        args = {'form': form,'text': text}
        return render(request,args)

def change_friends(request,operation,pk):
    friend = User.objects.get(pk=pk)
    if operation == 'add':
        Friend.make_friend(request.user,friend)
    elif operation == 'remove':
        Friend.lose_friend(request.user,friend)
    return redirect('home:home')

这是我的模特。py

from django.db import models
from django.contrib.auth.models import User


class Post(models.Model):
    post = models.CharField(max_length=500)
    user = models.ForeignKey(User,on_delete=models.CASCADE)
    created = models.DateTimeField(auto_Now_add=True)
    updated = models.DateTimeField(auto_Now=True)


class Friend(models.Model):
    users = models.ManyToManyField(User)
    current_user = models.ForeignKey(User,related_name='owner',null=True,on_delete=models.CASCADE)

    @classmethod
    def make_friend(cls,current_user,new_friend):
        friend,created = cls.objects.get_or_create(
            current_user=current_user
        )
        friend.users.add(new_friend)

    @classmethod
    def lose_friend(cls,created = cls.objects.get_or_create(
            current_user=current_user
        )
        friend.users.remove(new_friend)

追踪1

Traceback (most recent call last):
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\core\handlers\exception.py",line 47,in inner
    response = get_response(request)
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\core\handlers\base.py",line 179,in

_get_response
    response = wrapped_callback(request,*callback_args,**callback_kwargs)
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\views\generic\base.py",line 70,in v
iew
    return self.dispatch(request,*args,**kwargs)
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\views\generic\base.py",line 98,in d
ispatch
    return handler(request,**kwargs)
  File "C:\Users\daghe\Desktop\Alone-Osama\home\views.py",line 17,in get
    friends = friend.users.all()
AttributeError: 'QuerySet' object has no attribute 'users'

如果您看到一些便宜的代码,请问这是我的代码:D

跟踪2:

Traceback (most recent call last):
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\core\handlers\exception.py",in _get_response
    response = wrapped_callback(request,in view
    return self.dispatch(request,in dispatch
    return handler(request,line 25,in get
    return render(request,args)
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\shortcuts.py",line 19,in render
    content = loader.render_to_string(template_name,context,request,using=using)
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\loader.py",line 62,in render_to_string
    return template.render(context,request)
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\backends\django.py",line 61,in render
    return self.template.render(context)
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\base.py",line 170,in render
    return self._render(context)
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\base.py",line 162,in _render
    return self.nodelist.render(context)
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\base.py",line 938,in render
    bit = node.render_annotated(context)
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\base.py",line 905,in render_annotated
    return self.render(context)
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\loader_tags.py",line 150,in render
    return compiled_parent._render(context)
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\base.py",in render_annotated
    return self.render(context)
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\defaulttags.py",line 312,in render
    return nodelist.render(context)
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\template\base.py",line 446,in render
    url = reverse(view_name,args=args,kwargs=kwargs,current_app=current_app)
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\urls\base.py",line 87,in reverse
    return iri_to_uri(resolver._reverse_with_prefix(view,prefix,**kwargs))
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\urls\resolvers.py",line 685,in _reverse_with_prefix
    raise noreverseMatch(msg)

Exception Type: noreverseMatch at /
Exception Value: Reverse for 'create' not found. 'create' is not a valid view function or pattern name.

解决方法

是这一行:

friends = friend.users.all()

您已经忘记了模型类以大写字母开头:)

friends = Friend.users.all()

应该可以工作...基本上没有称为friend的模型,因此它当然没有user属性!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?