我有一个名为“状态”领域的典范:如何修改管理页面选择 - Django的
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更改为新状态时,其可能的选择集也发生变化。
如何在Admin添加/更改页面上实现此功能?
管理员的“添加”视图会发生什么情况,因为没有self.instance,您不能依赖实例进行过滤,所以请求对象存在就很好 – 2009-07-28 02:03:07
是的,此ModelForm需要处理缺少self.instance并适当设置最初的可用选项。我不知道为什么请求对象是相关的,但是您可以在ModelAdmin.add_view中访问它(http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/options.py# L704)。 – 2009-07-28 14:08:55
是否有可能改变模型本身的选择?毕竟,在创建字段时,最初在模型中指定了选项。 – 2012-06-06 12:47:02