gpt4 book ai didi

python - View 中的 Django 外键 - 获取列表中每个用户显示的第一张图像

转载 作者:行者123 更新时间:2023-11-30 22:19:40 24 4
gpt4 key购买 nike

我正在尝试让我的仪表板显示您所在区域的用户列表。到目前为止这是有效的,但我无法让用户的第一张图像显示。我收到的当前错误消息是“'QuerySet'对象没有属性'id'”

模型.py

class Images(models.Model):
image = models.ImageField(upload_to='profile_image', null=True, default='profile_image/none/no-img.png')
user = models.ForeignKey(User, on_delete=models.CASCADE, null=False)

View .py

class DashboardView(TemplateView):

template_name = 've/cp/dashboard.html'

@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(DashboardView, self).dispatch(*args, **kwargs)


def get(self, request, pk=None):
users = User.objects.exclude(id=request.user.id)
user = User.objects.filter(pk=pk)
try:
favorite = Favorite.objects.get(current_user=request.user)
favorites = favorite.users.all()
except Favorite.DoesNotExist:
favorites = None

args = {
'users': users, 'favorites':favorites, 'images': Images.objects.filter(user_id=user.id)
}

return render(request, self.template_name, args)

仪表板.html

        <h2>People near you</h2>
{% for user in users %}
<a href="{% url 've:view_profile_with_pk' pk=user.pk %}">
<h4>{{ user.username }}</h4>
<p>{{ user.images }}</p>

{% if images %}

{% for img in images %}
<a href="{{ img.image.url }}" target="_blank">
<img src="{{ img.image.url }}" class="" style="max-width: 300px">
</a>
{% endfor %}
{% else %}

<p>No images</p>
{% endif %}

</a>

{% if not user in favorites %}
<a href="{% url 've:change_favorites' operation='add' pk=user.pk %}">
<button type="button" class="btn btn-success">Add Favorite</button>
</a>
{% endif %}
{% endfor %}

最佳答案

user = User.objects.filter(pk=pk) 返回查询集。当稍后尝试 Images.objects.filter(user_id=user.id) 时,它会引发错误。您需要使用 first() 获取查询集中的第一个对象方法:

user = User.objects.filter(pk=pk).first()

或者使用get相反:

user = User.objects.get(pk=pk)

但如果提供的 id 的用户不存在,第二个选项将引发 DoesNotExist 错误。要处理此错误,您可以使用 get_object_or_404 ,如果 id 错误,则返回未找到页面:

from django.shortcuts import get_object_or_404
user = get_object_or_404(User, pk=1)

关于python - View 中的 Django 外键 - 获取列表中每个用户显示的第一张图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49047914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com