我不断收到此错误,我不知道如何解决它,我更改了几次,但它仍然给我
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}"
在这一部分中
user = get_list_or_404(User, username=self.kwargs.get('username'))
您检索的是列表而不是用户对象,您应该使用get_object_or_404
来直接获取用户对象。