python - django ForeignKey 字段只能按类别选择
问题描述
我的模型和Django admin and
Django 表单中有一个 ForeignKey 字段,当我显示该字段或在 Django 管理员中时,我得到了该模型中的所有字段但是,我只想在该下拉列表中显示选定的字段,例如
class Area(models.Model):
area_type_options = (('cc', 'Cost Center'), ('pc', 'Profit Center'),)
name = models.CharField(max_length=100)
area_type = models.CharField(max_length=100, choices=area_type_options)
class Item(models.Model):
name = models.CharField(max_length=150, null=True, unique=True)
profit_center = models.ForeignKey(Area, null=True, blank=True, on_delete=models.CASCADE, related_name='profit_center')
cost_center = models.ForeignKey(Area, null=True, blank=True, on_delete=models.CASCADE, related_name='cost_center')
我可以看到 中的所有记录cost_center
以及 中的所有记录profit_center
但是我只想查看area_type
cc 到cost_center
哪里以及区域类型 pc 到哪里profit_center
请帮忙
解决方案
您可以使用ForeignKey.limit_choices_to
[Django docs]来执行此操作:
class Item(models.Model):
name = models.CharField(max_length=150, null=True, unique=True)
profit_center = models.ForeignKey(Area, null=True, blank=True, on_delete=models.CASCADE, related_name='profit_center', limit_choices_to={'area_type': 'pc'})
cost_center = models.ForeignKey(Area, null=True, blank=True, on_delete=models.CASCADE, related_name='cost_center', limit_choices_to={'area_type': 'cc')
推荐阅读
- android - TextViewCompat 在文本视图自动调整大小期间不起作用(用于支持库)
- python-2.7 - 无法在 VS 2017 中安装任何 Python 库:“模块”对象没有属性“主”
- jenkins - 詹金斯的默认凭据
- sql - 用于比较满足时间戳条件的行的 SQL 查询
- ruby-on-rails - rake db:migrate 返回错误 rake db:migrate
- c# - sendgrid 在 Azure 功能中向多个收件人发送电子邮件失败
- c# - 如何将 linq 查询转换为列表键值对
- jenkins - 使用 Jenkins 和私有 SVN 存储库进行管道
- reactjs - 用 React 制作的按钮不干?如何?
- css - 影响单独 div 的转换