问题需求:在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]!!