You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 09:57:18