python - 在 Django Project 中显示 UserInfo 匹配查询不存在
问题描述
这是views.py 代码。在 def index 部分,我使用 UserInfo 模型。这里信息以一对一的关系存储,所以我写 (user__pk=user_id)
from django.shortcuts import render
from Login_app.forms import UserForm, UserInfoForm
from Login_app.models import UserInfo
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login, logout
from django.http import HttpResponseRedirect, HttpResponse
from django.contrib.auth.decorators import login_required
from django.urls import reverse
def index(request):
dict={}
if request.user.is_authenticated:
current_user = request.user
user_id = current_user.id
user_basic_info = User.objects.get(pk=user_id)
user_more_info = UserInfo.objects.get(user__pk=user_id)
dict = {'user_basic_info':user_basic_info, 'user_more_info':user_more_info}
return render(request, 'Login_app/index.html', context=dict)
这是models.py code.where我创建UserInfo模型。它存储用户,facebook_id,profile_pc。
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class UserInfo(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
facebook_id = models.URLField(blank=True)
profile_pic = models.ImageField(upload_to = 'profile_pics', blank=True)
def __str__(self):
return self.user.username
解决方案
确保您已在UserInfo
表中插入数据。要使用 User 表获取与一对一字段相关的日期,您不必显式提取用户 ID。下面的代码应该做到这一点 -
current_user = request.user
user_more_info= UserInfo.objects.filter(user=current_user).get()
此外,如果您在 User 模型中有一个名为“full_name”的字段,您可以直接访问它 -
user_full_name=current_user.full_name
推荐阅读
- bash - 在 Tcl foreach 循环中运行 sh 脚本
- c# - 有没有办法通过反射来判断自动属性和常规属性之间的区别?
- windows - 是什么让通过 Windows SMB 协议启动服务成为可能?
- java - 使用 JPA 检查行记录是否存在
- html - 图像不会并排显示
- javascript - Axios:如何访问被拒绝的承诺的响应对象?
- python - pygame 使精灵向上和向下移动
- node.js - 在将有效负载发送到客户端之前从 requestjs 转换有效负载
- ios - 反应本机iOS构建问题在提供的路径中找不到应用程序包
- c# - 在没有 Parallel.For() 的情况下在 c# 中的 for 循环中实现多线程