【发布时间】:2019-01-28 00:17:27
【问题描述】:
我正在尝试检索有关用户个人资料的信息以显示在页面上。问题是它从每个用户那里检索相关信息,而不仅仅是登录的用户。
我曾尝试只请求当时登录的用户,但很遗憾无法让它工作。
HTML
<div>
<span class="bold">
<p>Bio:</p>
</span>
<p>
{{ profile.bio }}
</p>
</div>
models.py
class Profile(models.Model):
user = models.OneToOneField(User, default=None, null=True, on_delete=models.CASCADE)
bio = models.CharField(max_length=2000)
instrument = models.CharField(max_length=255, choices=instrument_list, blank=True)
level = models.CharField(max_length=255, choices=level_list, blank=True)
preferred_language = models.CharField(max_length=255, choices=language_list, blank=True)
time_zone = models.CharField(max_length=255, choices=time_list, blank=True)
def __str__(self):
return self.profile
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
class ProfileForm(ModelForm):
class Meta:
model = Profile
exclude = ('user',)
views.py
@login_required
def profile_page_edit(request):
if request.method == 'POST':
form = ProfileForm(request.POST)
if form.is_valid():
profile = form.save(commit=False)
profile.user = request.user
profile.save()
return redirect('/student/profile-page')
else:
form = ProfileForm()
form = ProfileForm()
context = {'form': form }
return render(request, 'student/profile_page_edit.html', context)
@login_required
def profile_page(request):
form = ProfileForm
profile = request.user.profile
args = {'form' : form, 'profile' : profile}
return render(request, 'student/profile_page.html', args)
我正在尝试让 profile_page 视图仅显示一个用户(当前登录的用户)的相关模型信息。
【问题讨论】:
-
您需要在表单或html文件中显示数据吗?
-
我不明白您为什么将
Profile.objects.all()传递给模板并对其进行迭代。除了所有Profiles,您还能期待什么?当前登录的用户是request.user,所以就使用它。 -
当你得到答案时不要删除你的问题。见meta.stackoverflow.com/questions/378440/…。