Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-ListView返回标记字段中具有给定标记的用户列表_Python_Django_Django Models - Fatal编程技术网

Python Django-ListView返回标记字段中具有给定标记的用户列表

Python Django-ListView返回标记字段中具有给定标记的用户列表,python,django,django-models,Python,Django,Django Models,我试图返回一个具有特定技能的用户列表,技能是CustomUser模型中的标记字段(django-taggit)。我正在努力在我的ListView(skill_list.html)中获得正确的查询集。我希望能够单击用户配置文件(profile.html)上列出的技能,然后让它返回技能列表页面,其中包含所有拥有该技能的用户的列表 models.py: class CustomUser(AbstractUser): objects = CustomUserManager() posit

我试图返回一个具有特定技能的用户列表,技能是CustomUser模型中的标记字段(django-taggit)。我正在努力在我的ListView(skill_list.html)中获得正确的查询集。我希望能够单击用户配置文件(profile.html)上列出的技能,然后让它返回技能列表页面,其中包含所有拥有该技能的用户的列表

models.py:

class CustomUser(AbstractUser):
    objects = CustomUserManager()
    position = models.CharField(max_length =200, null=True, default='', 
    blank=True)
    bio = models.CharField(max_length=400, null=True, default='', 
    blank=True)
    skills = TaggableManager(help_text="A comma-separated list of tags.")
views.py:

class SkillView(ListView):
model = CustomUser
template = 'skill_list.html'
queryset = CustomUser.objects.all()

def get_queryset(self):
    queryset = CustomUser.objects.filter(skills__name__in= 
    [self.kwargs['skill']])
    return queryset
profile.html:

<div class="container-fluid" id="profile_container">

            <div class="container skills">
            {% for skill in user.skills.all %}
                <div class="skill_bubble"><p class="skill_bubble"><a href=" 
{% url 'skills' %}">{{ skill.name }}</a></p></div>
            {% endfor %}
            </div>
        </div>

{user.skills.all%中的技能为%}

{%endfor%}
skill_list.html:

<div class="container">

    {% for user in object_list %}

        <div class="container user_name">
        <p class="profile_name"><a href="{% url 'profile_with_pk' 
pk=user.pk %}">{{ user.first_name }}&nbsp{{ user.last_name }}</a></p>
        <p class="profile_text">{{user.position}}</p>
</div>
</div>

{对象列表%中的用户为%0}

{{user.position}


我在配置文件页面上设置了url以返回“skill\u list.html”,但是在skill\u list页面上我得到一个关键错误:异常值“skill”。

我认为应该是:
请求。user
而不是profile.html中的
user
,那么为什么不使用“Q”搜索查询呢。在文件里查一下

我希望能够单击用户配置文件(profile.html)上列出的技能,然后让它返回技能列表页面

在这种情况下,URL需要包含技能,例如
/skills/python/
/skills/sql/

您可以通过将URL更改为以下内容来完成此操作:

path('skills/<slug:skill>', views.SkillView.as_view(), name='skills')
最后,由于您只使用列表中的一项

queryset = CustomUser.objects.filter(skills__name__in=[self.kwargs['skill']])
您可以删除中的
\u并将查询更改为:

queryset = CustomUser.objects.filter(skills__name=self.kwargs['skill'])

不,当我将queryset更改为其他内容时,该模板工作正常。问题在于获取正确的查询集。我认为问题在于这一行:queryset=CustomUser.objects.filter(skills\uu name\uu in=[self.kwargs['skill'])您没有显示您的URL模式。要使
self.kwargs['skill']
起作用,您需要在URL中包含该技能。您的意思是要包含customuser模型的pk,以便我可以访问与之相关的技能吗?我的url是:path('skills/',views.SkillView.as_view(),name='skills')。我知道如何对模型实例执行此操作,但我现在有点困惑,因为这不是一个模型实例,而是一个包含许多条目的模型字段。您需要一个具有此技能的用户列表,因此需要在URL中包含此技能,而不是用户的PK。请看下面我的答案。谢谢你的帮助!现在我没有收到错误,但是列表是空的。您知道我是否应该引用skill_list.html模板中的查询集,如:{%for user in object_list%}?
{%for user in object_list%}
。尝试向queryset添加一些打印/日志记录,以确保它返回结果,因此我确定问题不在于如何在模板中调用queryset。行:queryset=CustomUser.objects.filter(skills\uu name=self.kwargs['skill'])找不到正确的技能名称。这就是我应该在profile.html中引用技能的方式吗:?是的,您需要在
{%url%}
标记中包含该技能,但我不熟悉django taggit,所以我不确定正确的用法是
{%url'skills'skill.name%}
还是稍有不同的用法。就是这样!非常感谢
queryset = CustomUser.objects.filter(skills__name=self.kwargs['skill'])