Django认证系统用户数据获取及工单关联技术咨询
解决方案:Django默认用户模型数据获取与工单关联
1. 获取Django默认认证系统的用户数据
Django自带的默认用户模型是django.contrib.auth.models.User,无需在models.py中声明即可直接使用。
获取当前登录用户
视图函数中,只要用户已完成登录,request.user就是当前用户的对象,可直接读取字段:
from django.contrib.auth.decorators import login_required @login_required # 确保仅登录用户可访问 def profile_view(request): # 读取当前用户信息 username = request.user.username email = request.user.email user_id = request.user.id # 其他内置字段如first_name、last_name也可直接调用
查询特定/全部用户数据
若需查询单个或所有用户,直接导入默认User模型进行数据库操作:
from django.contrib.auth.models import User # 通过用户名获取单个用户 target_user = User.objects.get(username="test_user") # 通过ID获取单个用户 target_user = User.objects.get(id=1) # 查询系统内所有用户 all_users = User.objects.all()
2. 将工单模型关联到用户
只需在工单模型中添加ForeignKey字段,关联到默认User模型即可实现绑定。
修改工单模型(models.py)
from django.db import models from django.contrib.auth.models import User class Ticket(models.Model): title = models.CharField(max_length=200) content = models.TextField() # 关联默认用户模型,on_delete参数可按需调整(CASCADE表示用户删除时工单同步删除) user = models.ForeignKey(User, on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return self.title
修改后执行数据库迁移:
python manage.py makemigrations python manage.py migrate
视图中关联用户到工单
创建工单时,将当前登录用户赋值给工单的user字段:
from django.shortcuts import render, redirect from .models import Ticket from django.contrib.auth.decorators import login_required @login_required def create_ticket(request): if request.method == 'POST': title = request.POST['title'] content = request.POST['content'] # 创建工单并绑定当前用户 Ticket.objects.create(title=title, content=content, user=request.user) return redirect('ticket_list') # 跳转到工单列表页 return render(request, 'create_ticket.html')
模板中显示工单所属用户
在工单列表模板中,通过工单对象的user属性直接读取用户信息:
{% for ticket in tickets %} <div class="ticket-item"> <h3>{{ ticket.title }}</h3> <p>提交人:{{ ticket.user.username }}</p> <p>{{ ticket.content }}</p> <p>提交时间:{{ ticket.created_at }}</p> </div> {% endfor %}
3. 额外提示
- 若后续需要扩展用户字段(如手机号、头像),可基于
AbstractUser自定义用户模型,当前使用默认模型完全满足需求,后续迁移成本极低。 - 始终用
@login_required装饰工单相关视图,避免未登录用户操作时出现匿名用户绑定错误。
内容的提问来源于stack exchange,提问作者Yukki
相关产品推荐
相关产品推荐

