如何解决查询对象错误-ValueError:无法查询“ mayur”:必须是“ User”实例

时间:2018-06-20 19:22:04

标签: python django django-models django-views

我正在尝试访问可用模块中的关注者,我可以获取计数的数量,例如关注者数量和关注者数量,但是我无法获取关注者列表以查看关注者。需要建议。

我的module.py文件:

from django.db import models

class FollowerFollowing(models.Model):
        user_from = models.ForeignKey('User', on_delete=models.SET_NULL, null=True, related_name='rel_from_set')
        user_to = models.ForeignKey('User', on_delete=models.SET_NULL, null=True, related_name='rel_to_set')
        created = models.DateTimeField(auto_now_add=True, db_index=True)

        class Meta:
            ordering = ('-created',)

        def __str__(self):
            return '{} follows {}'.format(self.user_from, self.user_to)


    User.add_to_class('following', models.ManyToManyField('User', through=FollowerFollowing, related_name='followers', symmetrical=False))

我的views.py文件:

def follower(request):
    print(request)
    if request.session['user_id']:
        query = FollowerFollowing.objects.filter(user_from=request.user)
        print(query)
        context = {
            'query': query
            }
        return render(request, 'Instagram_app/following.html', context)
    else:
        pass
    return HttpResponse("No user logged in")

follower.html(模板)

{% extends 'Instagram_app/home.html'%}
{% block content %}
    <h2>following</h2>
    <div id="action-list">
        {% for result in query %}
            <h1>{{ result }}</h1>
        {% endfor %}
    </div>
{% endblock %}

控制台错误是:

(value, opts.object_name))
ValueError: Cannot query "mayur": Must be "User" instance.
[20/Jun/2018 11:45:27] "GET /Instagram_app/follower HTTP/1.1" 500 105165

需要解决此问题的建议。谢谢

2 个答案:

答案 0 :(得分:0)

尝试更改此部分:
(user_from=request.user)
为此:
(user_from=User.objects.get(username=request.user))
您的user_from必须是User模型实例,而不是简单的用户名。

答案 1 :(得分:0)

试图根据登录的用户会话更改代码以显示以下列表

来自:

query = FollowerFollowing.objects.filter(user_from=request.user)

收件人:

query = FollowerFollowing.objects.filter(user_from=request.session['user_id'])

因为request.user为您提供了所有用户的单个且首次登录的用户关注列表。