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

AttributeError at / 'QuerySet' object has no attribute '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, self.template_name, 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')

这是我的models.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, current_user, new_friend):
        friend, 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, *args, **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", 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 view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Users\daghe\anaconda3\envs\env\lib\site-packages\django\views\generic\base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
  File "C:\Users\daghe\Desktop\Alone-Osama\home\views.py", line 25, in get
    return render(request, self.template_name, 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", 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\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 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\defaulttags.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, *args, **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 属性!