我有一个模型,它有一个名为“state”的字段:
class Foo(models.Model):
...
state = models.IntegerField(choices = STATES)
...
对于每个状态,可能的选择是所有状态的某个子集。例如:
if foo.state == STATES.OPEN: #if foo is open, possible states are CLOSED, CANCELED
...
if foo.state == STATES.PENDING: #if foo is pending, possible states are OPEN,CANCELED
...
因此,当 foo.state 更改为新状态时,其可能的选择集也会更改。
如何在管理员添加/更改页面上实现此功能?
原文由 shanyu 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要在该模型的 ModelAdmin 类中 使用自定义 ModelForm 。在自定义 ModelForm 的 init 方法中,您可以动态设置该字段的选项:
你会像这样使用它: