为什么我会收到此错误“/user/Imnew 字段 'id' 处的 TypeError 需要一个数字,但得到了 [<User: Imnew>]。”?

问题描述 投票:0回答:1

我不断收到此错误,我不知道如何解决它,我更改了几次,但它仍然给我

TypeError at /user/Imnew Field 'id' expected a number but got [<User: Imnew>]. 
我也在网上搜索了答案,但无济于事,我该怎么办?

如果我需要发布更多代码,请告诉我

提前致谢

views.py

class PostListView(ListView):
    model = post 
    template_name = 'website/welcome.html'
    context_object_name = 'posts'
    ordering = ['-date_posted']
    paginate_by = 4




class UserPostListView(ListView):
    model = post 
    template_name = 'user_posts.html'
    context_object_name = 'posts'
    paginate_by = 4

    def get_queryset(self):
        user = get_list_or_404(User, username=self.kwargs.get('username'))
        return post.objects.filter(author=user).order_by('-date_posted')

url.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', PostListView.as_view(), name='home'),
    path('user/<str:username>', UserPostListView.as_view(), name='user_posts'),
    path('posts/', include('posts.urls')),
    path('accounts/', include('django.contrib.auth.urls')),
    path('signup', signup, name='signup'),
    path('profile/',profile, name='profile'),
    path('', index, name='index'),
]

模型.py

from django.db import models
from django.contrib.auth.models import User

class post(models.Model):
    title = models.CharField(max_length=50)
    body = models.CharField(max_length=1000000)
    author = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
    date_posted=models.DateTimeField(auto_now_add=True)
    def __str__(self):
        return f"{self.title}"

python django pagination
1个回答
0
投票

在这一部分中

user = get_list_or_404(User, username=self.kwargs.get('username'))
您检索的是列表而不是用户对象,您应该使用
get_object_or_404
来直接获取用户对象。

© www.soinside.com 2019 - 2024. All rights reserved.