我有一個名爲「狀態」領域的典範:如何修改管理頁面選擇 - 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