Django中如何获取已登录用户关联Wallet模型的指定数据?
已登录用户个人页面展示关联Wallet数据的解决方法
你的需求是让登录用户在个人页面看到自己Wallet里的usd数值,结合现有模型和views代码,调整方案如下:
修正Views.py代码
利用Django自带的request.user可直接获取当前登录用户对象,再通过Wallet模型的外键关联找到对应记录。为避免用户无Wallet记录导致报错,推荐用get_object_or_404做异常处理:
from django.shortcuts import render, get_object_or_404 from django.contrib.auth.decorators import login_required from .models import Wallet @login_required(login_url='main') def profile_user(request): # 通过当前登录用户匹配对应的Wallet wallet = get_object_or_404(Wallet, name=request.user) usd = wallet.usd return render(request, 'profile.html', {'usd': usd})
模板页面(profile.html)显示数据
在模板中直接调用传入的usd变量即可:
<p>账户余额:{{ usd }} USD</p>
优化建议(可选)
你的Wallet模型里外键字段命名为name容易混淆,建议改成user更符合语义:
class Wallet(models.Model): user = models.OneToOneField(User, null=True, on_delete=models.CASCADE) usd = models.FloatField(null=True)
修改后,views里的查询语句对应调整为:
wallet = get_object_or_404(Wallet, user=request.user)
内容的提问来源于stack exchange,提问作者Fors1t
相关产品推荐
相关产品推荐

