使用django admin显示外键关联下拉选项,并在点击保存后将外键关联值更新到本表中

     阅读:40

1.在这里插入图片描述

首先,我这个想增加这个模型数据时有一个下拉选项是Customer表中的字段,然后想通过选择该选项保存后,把这个选项的值添加到本表中的customer_name字段。
第一个红框处是外键关联表名,第二个红框处是关联字段名,第三个是级联删除动作,必须要有,不然报错。

2.在这里插入图片描述因为要做外键关联,所以models中,Customer这张表就必须要加unique=True唯一参数,不然一样会报错。还有就是因为要返回是个字段的值,而不是一个数据集,所以在python3中我们要添加一个
在这里插入图片描述
这样才能使下拉选项是字段的值,而不是数据集object(1)

然后迁移同步models和数据库改动
python manage.py makemigrations appname
python manage.py sqlmigrate appname 0001
python manage.py migrate

截至现在,我们就能看到下拉选框里面有外键关联的字段了
在这里插入图片描述
但是现在还没有完成,有个问题你会发现,就是虽然选择保存后,但是数据库里面,本表中customer_name这个字段没有写入外联字段的值。
要想把值写入进去,我们还要在admin.py中去添加一个save_model()方法
在这里插入图片描述

最后,因为我们下来选项是to_customer_key外联字段,值是保存在customer_name字段的,所以customer_name字段就可以设置成在创建的时候就不显示了,只显示to_customer_key这个字段就好。
在这里插入图片描述

至此,我们的这个定制功能就完成了。