本文一共说四个知识点:
一、修改外键下拉列表显示的字段信息
二、修改list_display显示的外键字段信息
三、search_fields搜索页对外键字段的内容进行搜索
四、list_display_links的作用
下面开始:
先看用户表和订单的models模型
一、修改外键下拉列表显示的字段信息
问题重现:此处的User是对应的一张继承AbstractUser的用户表,默认显示的该用户表的username字段,现在需要将它修改显示用户表里的其他字段信息
我这里修改为用户表里的username加openid字段:
1,自定义一个继承django.forms.ModelChoiceField的类并重写label_from_instance方法,返回username加openid的组合
2,重写ModelAdmin里的formfield_for_foreignkey方法,判断db_field.name是否等于外键名(这个名字是models模型里的字段名),并调用上面的自定义类。
修改完成之后的效果:
二、list_display显示外键字段信息
问题重现:在list_display上直接填写外键字段user,默认显示的是用户表里的username字段信息,现需要修改为用户表里的其他字段信息进行显示(这里还是修改为openid)
修改USER列:在list_display里添加openid(这里可以不与模型里的字段一致,但是后面用的需要与这里的一致),再定义一个同名方法,该方法返回外键字段user里的openid。 可使用openid.short_description对list_display修改显示的列名。
三、search_fields搜索页对外键字段的内容进行搜索
问题重现:默认情况下,在search_fields属性里不能直接填写外键的模型名称,否则在搜索的时候会报错。比如下图的user是外键
需要将上面的user修改为 外键名__字段名 ,如 user__openid,这样就能对关联外键user的openid进行搜索了
四、list_display_links的作用
问题重现:默认情况下,我们只能点击订单编号进入详情页,但这时我想点击其他信息时也能进入详情页
添加list_display_links后的效果
我希望这篇文章能帮忙到你们~~