【问题标题】:How can I resolve query object error - ValueError: Cannot query "mayur": Must be "User" instance如何解决查询对象错误 - ValueError:无法查询“mayur”:必须是“用户”实例
【发布时间】:2018-06-20 19:22:04
【问题描述】:

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

我的 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

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

【问题讨论】:

    标签: python django django-models django-views


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      来自:

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

      收件人:

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

      因为request.user 为您提供了所有用户的单个和第一个登录用户的以下列表。

      【讨论】:

        猜你喜欢
        • 2023-03-27
        • 2021-04-08
        • 1970-01-01
        • 2020-07-17
        • 1970-01-01
        • 2021-02-15
        • 2020-04-17
        • 1970-01-01
        • 2021-10-12
        相关资源
        最近更新 更多