为了账号安全,请及时绑定邮箱和手机立即绑定

字段“id”需要一个数字但得到了“natsu”django

字段“id”需要一个数字但得到了“natsu”django

慕码人8056858 2023-02-07 14:24:37
我想创建一个 user_posts 视图,其中包含与特定用户相关的所有帖子让我们说有/有用户“Natsu”写的博客帖子然后登录用户让我们说“Testuser”将能够看到所有帖子由该用户即用户“Natsu”的所有帖子。blog models.pyclass Post(models.Model):  title = models.CharField(max_length=250)  slug = models.SlugField(max_length=250, unique_for_date='publish')  author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blog_posts')  body = models.TextField()user models.pyclass Profile(models.Model):  user = models.OneToOneField(User, on_delete=models.CASCADE)  image = models.ImageField(upload_to='profile_pic', default='default.jpg')  def __str__(self):    return f'{ self.user.username } Profile'views.pydef user_posts(request, username):  posts = Post.objects.filter(author=username)  return render(request, 'blog/user_posts.html', {'posts':posts})user_posts.html{% for post in posts %}      <a href="{% url 'user-posts' post.author.username %}" class="mr-2">{{ post.author }}</a>      <h2><a href="{% url 'post-detail' post.pk %}">{{ post.title }}</a></h2>      {{ post.body|truncatewords:30 }} {% endfor %}urls.py  path('user/<str:username>/', views.user_posts, name='user-posts'),但是当我访问那个 url 时它显示错误Field 'id' expected a number but got 'admin'.
查看完整描述

3 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

authoronPost将是User表的主键,它是一个整数(除非从默认值修改)而不是usernameusername您要么需要首先查找,User要么使用其他一些 Django“魔法”。也许尝试其中之一(我认为他们都在后端做同样的事情):

posts = Post.objects.filter(author=User.object.filter(username=username)[:1])

或者

posts = Post.objects.filter(author__username=username)

(我也没有测试......所以请随意编辑这个答案或评论,如果两者都不起作用)


查看完整回答
反对 回复 2023-02-07
?
翻阅古今

TA贡献1780条经验 获得超5个赞

author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blog_posts')

当您为 auhor 字段使用外键时,我认为您不能通过 posts = Post.objects.filter(author=username). 你能试试filter(author=user.id)吗?


查看完整回答
反对 回复 2023-02-07
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

posts = Post.objects.filter(author=User.object.get(username=username))

或者

  posts = Post.objects.filter(author__username=username)


查看完整回答
反对 回复 2023-02-07
  • 3 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信