【发布时间】:2021-08-31 10:25:23
【问题描述】:
我正在尝试在其个人资料页面中显示特定用户的所有帖子。因此,如果有人访问我的个人资料页面,他们可以看到我的所有帖子等等。
all_post_by_user = Log.objects.filter(author=username)
我正在通过特定用户名获取帖子。作者在models.py中定义
username 作为参数传递给视图..
views.py:
@verified_email_required
@login_required
def profile(request, username):
if request.method == 'POST':
u_form = UserUpdateForm(request.POST, instance=request.user)
p_form = ProfileUpdateForm(request.POST, request.FILES, instance=request.user.profile)
if u_form.is_valid and p_form.is_valid():
u_form.save()
p_form.save()
message = messages.success(request, f'Your profile has been updated')
return redirect('profile', username=username)
else:
u_form = UserUpdateForm(instance=request.user)
p_form = ProfileUpdateForm(instance=request.user.profile)
try:
profile = User.objects.get(username=username)
except User.DoesNotExist:
message = messages.warning(request,f'Profile not found for {username}')
return redirect('home')
profile = ''
print('profile name: ',profile.username)
all_post_by_user = Log.objects.filter(author=username)
print(all_post_by_user)
context = {
'u_form' : u_form,
'p_form' : p_form,
'profile' : profile,
'all_post_by_user' : all_post_by_user
}
return render(request, 'users/profile.html', context)
如果我把它改成all_post_by_user = Log.objects.filter(author=request.user)就可以了
models.py:
class Log(models.Model):
title = models.CharField(blank=False, max_length=500)
content = models.TextField(blank=False)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
slug = models.SlugField(max_length=50, null=False, unique=True)
author = models.ForeignKey(User, on_delete=models.CASCADE,null=True, blank=True)
image = models.ImageField(
upload_to='images', blank=True)
【问题讨论】:
-
这个问题很可能是您试图通过主键获取记录,但传递的是用户名字符串。您可以编辑您的问题以省略模板代码但包含您的视图函数/类吗?
-
我已经做到了。