django - django 管理员在字段中有选择选项取决于其他字段中的值
问题描述
我刚开始使用 Django,在管理端设置模型时遇到了麻烦。
这是情况。我有 12 个中心,每个中心有 20 多个实验室。我有一个出版物模型班。在管理方面,我希望能够为每个出版物分配中心和实验室。每个出版物可以分配多个中心,并且在每个中心内可以分配多个实验室。
但是,我不希望实验室领域列出所有可能的实验室,因为太多了。我希望在实验室字段中看到的列表仅显示在中心字段中选择的中心中的实验室(理想情况下,如果选择了多个中心,则每个中心都有单独的列表可供选择)
以下是我拥有的模型:
class Publications(models.Model):
center = models.ManyToManyField('Center')
laboratory = models.ManyToManyField('Laboratory')
class Center(models.Model):
name = models.CharField(max_length=255)
class Laboratory(models.Model):
name = models.CharField(max_length=255)
所以,在创建管理类PublicationsAdmin(admin.ModelAdmin), CenterAdmin(admin.ModelAdmin), LaboratoryAdmin(admin.ModelAdmin)
( )。但是列表中的实验室太多,易于使用。我只想查看属于所选中心的实验室(理想情况下,如果选择了多个中心,则需要单独的实验室列表或输入框或窗口等)。
有没有办法通过不同的设置将它们联系在一起?或者有没有办法修改逻辑PublicationsAdmin(admin.ModelAdmin)
?
解决方案
为此目的的最佳选择是使用django-autocomplete-light。您将对转发功能特别感兴趣,该功能正是您想要的。
另请注意,为了过滤属于实验室的中心,您需要一个外键 from Center
to Laboratory
。
class Center(models.Model):
name = models.CharField(max_length=255)
laboratory = models.ForeignKey(Laboratory, models.PROTECT)
推荐阅读
- sql - Hive 没有将数据从 ORC 上的选择插入到 ORC 的表中
- r - 一个 Rcpp 函数参数是一个用默认值填充的列表
- javascript - 单击时如何传递输入焦点?
- css - 你能解释一下下面代码中的CSS吗
- elasticsearch - 如何使用删除 api 删除某些日期范围之间的弹性搜索索引?
- flutter - 你可以在树构建后为小部件设置 Flutter Keys 吗?
- kubernetes - 安装卷导致 kubernetes minikube 中的空文件夹?
- java - 从字符串中删除字符串模式
- reactjs - 在 antd 表单规则中添加自定义验证错误
- reactjs - 可能 react-checkbox-group 中的所有选项