在Django项目显示我UserInfo匹配查询不存在



以下是views.py代码。在定义索引部分,我使用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代码。在这里我创建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()

此外,如果用户模型中有一个名为'full_name'的字段,您可以直接访问它-

user_full_name=current_user.full_name

最新更新