django ForeignKey字段应仅按类别进行选择



我的模型中有一个ForeignKey字段,在Django admin andDjango表单中`当我显示该字段或在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_centerprofit_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')

最新更新