首页 > 其他分享 >Django外键引用User模型时显示username的解决方法

Django外键引用User模型时显示username的解决方法

时间:2023-04-04 17:15:58浏览次数:44  
标签:username __ name models 模型 外键 Django User

问题需求:在Django Admin后台模型管理中,引用User外键的字段,显示的是username(用户名)。下拉菜单要显示姓名(last_name和first_name,外加username保持唯一性、可辨别性)。

使用代理模型(proxy model)

from django.db import models
from django.contrib.auth.models import User

# 创建代理模型,继承于User模型
class MyUser(User):
    class Meta:
        proxy = True
    # Python2使用__unicode__方法,Python3使用__str__方法。
    def __str__(self):
        return self.last_name + self.first_name + self.username

# 正常的[仅博客园]业务模型
class model_name(models.Model):
  name = models.CharField(
          max_length=128,
          verbose_name='客户全称'
      )
  tax = models.CharField(
        max_length=18,
        verbose_name='统一信用代码'
    )
  # [SDM]外键字段,引用的是代理模型
  owner = models.ForeignKey(
        MyUser,
        on_delete=models.PROTECT,
        verbose_name='归属人'
    )

参考:https://stackoverflow.com/questions/18911410/
参考回答因为年限的问题(2013年的回答),其内容的中的__unicode__方法仅适用于Python2,在Python3流行的现在已经不适用了。
本随笔仅供参考,不得全盘复制,仅发表于博客园[SDM]!!

标签:username,__,name,models,模型,外键,Django,User
From: https://www.cnblogs.com/freedom-eagle/p/17287076.html

相关文章

  • django笔记2
    Django开发主题:员工管理系统1.新建项目2.创建apppythonmanage.pystartappapp01注册app:3.设计表结构(django)fromdjango.dbimportmodelsclassDepartment(models.Model):"""部门表"""title=models.CharField(verbose_name='标......
  • Django获取本地ip
    importsocketdefget_local_ip():"""获取本机IP地址:通用"""try:s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)s.connect(('8.8.8.8',80))ip=s.getsockname()[0]fina......
  • Django笔记十五之in查询及date日期相关过滤操作
    这一篇介绍关于范围,日期的筛选inrangedateyearweekweekdayquarterhour1、inin对应于MySQL中的in操作,可以接受数组、元组等类型数据作为参数:Blog.objects.filter(id__in=[1,2,3])对应的SQL是:select*fromblog_blogwhereidin(1,2,3);字符串也可以作......
  • python Django中的cookies和session会话保持技术
    cookies和session都是为了保持会话状态而诞生的两个存储技术会话定义:从打开浏览器访问一个网站,到关闭浏览器结束此次访问,称之为一次会话HTTP协议是无状态的,导致会话状态难以保持Cookies-定义cookies是保存在客户端浏览器上的存储空间Cookies特点......
  • python Django的admin后台建设
    什么是admin管理后台django提供了完善的后台管理数据库的接口,可供开发过程中调用和测试使用django会搜集所有已注册的模型类,为这些模型类提供数据管理界面,供开发者使用admin配置步骤1、创建后台管理账号-该账号为管理后台最高权限账号—注意:可以创建多个超级用户pytho......
  • Django自动插入登录用户用户名
    在Django管理界面中我想在发布时自动插入登录用户名和博客文章,目前我已经在每个用户的下拉菜单中显示每个用户选择但显然这不是很好,所以我想它自动输入这个。自动插入登录用户用户名在Django这里是我的代码:models.py从django.db进口车型从django.contrib.auth.models导入用户......
  • Django笔记十四之统计总数、最新纪录和空值判断等功能
    本篇笔记将介绍一些Django查询中统计总数、最新纪录和空值判断等功能。countin_bulklatest、earliestfirst、lastexistscontains、icontainsgt、gte、lt、ltestartswith、istartswithisnull1、count返回查询的QuerySet的总数。比如想查询Blog下name='hunte......
  • Django使用数据库
    一、数据库配置使用前要设置时区TIME_ZONE,TIME_ZONE='UTC'还要注意setting.py配置文件头部的INSTALLED_APPS选项(已安装程序)。确认自建的pollsapp应用已经安装到总项目容器中了。就是添加一句话:‘pollsapp.apps.PollsappConfig’,其中pollsapp是你创建应用的名字,apps表示应......
  • Django项目的第1个应用
    1.在Django项目中,每一个应用都是一个python包,都用同一个技术规范。Django自带工具startapp,可以自动生成应用的基础目录结构。如:diango-daminstartapppollsapp2.运行后会创建一个pollsapp目录,不同之处是多一个空的views.py文件,存放视图。3.实现网页能看到视图:一是要有内容:在......
  • django直线支付宝支付接口
    1.创建Django项目首先,在命令行中使用以下命令创建一个新的Django项目:django-adminstartprojectproject_name2.安装PythonSDK然后,下载并安装支付宝PythonSDK。可以使用pip命令进行安装:pipinstallalipay-sdk-python3.配置支付宝参数配置支付宝参数在settings.py文件......