有沒有簡單的方法可以做到這一點?在運行時設置模型字段選擇屬性?
回答
您可以設置選擇屬性可迭代: http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.Field.choices
我沒有測試此我自己,所以我不知道什麼時候該選擇屬性是實際評估,但是你可以指定一個發電機函數可以計算出你想要的選擇。
您可能還調查使用模型post_init信號:http://docs.djangoproject.com/en/1.1/ref/signals/#post-init
這會給你訪問你的模型的Django已初始化後,等等,你可以在那時設置的選擇。你可能想要通過如下所示的「_meta」界面:
instance._meta.get_field_by_name('FIELD_NAME')[0].choices = [<choices>...]
這幾乎工作。我可以看到當前的選擇,但如果我嘗試將其設置爲不同的值,則會出現以下錯誤:AttributeError:無法設置屬性。 – 2010-03-05 18:37:24
在字段來源中,您可以看到「選項」是隻讀屬性: http://code.djangoproject.com/browser/django/tags/releases/1.1.1/django/db/models /fields/__init__.py#L296 嘗試將設置改爲「_choices」。這在shell中起作用,但我不會對意想不到的後果作任何保證。 – 2010-03-05 19:26:45
是的!這對我行得通。謝謝一堆。 – 2010-03-05 19:43:33
- 1. 迭代字典時動態設置類屬性(模型字段)
- 2. 在Django生成的選擇字段中設置名稱屬性
- 3. 在運行時設置href屬性
- 4. 在運行時設置類屬性
- 5. 在運行時設置sample_variables屬性
- 6. 在運行時Log4Php屬性設置
- 7. 在運行時設置點屬性?
- 8. 未設置選擇屬性
- 9. 更改模型字段的選擇屬性
- 10. 如何在運行時設置字段
- 11. 設置模型屬性
- 12. 設置ActiveRecord模型屬性
- 13. 未設置模型屬性
- 14. 如何在Django中使用模型字段設置動態選擇字段
- 15. Laravel 5.2根據輸入字段設置模型屬性
- 16. 設置屬性@運行時間
- 17. 設置屬性在運行時屬性的類別
- 18. Django ORM:在字段屬性上選擇
- 19. 按外鍵父模型的字段設置選擇
- 20. 篩選模型,然後設置屬性對於那些模型
- 21. 訪問模型字段屬性在Django
- 22. 如何在magento模塊配置xml中設置字段屬性?
- 23. 在模型對象上設置屬性?
- 24. 設置一個計算屬性的從屬鍵在運行時
- 25. Django模型:CharField與選擇屬性
- 26. 角選擇不改變模型屬性
- 27. Rails模型屬性選擇器
- 28. 模型設計問題:運行時的自定義字段?
- 29. 得到屬性類型在運行時
- 30. 在運行時構建TcxGrid時將TcxSpinEdit屬性設置爲列
出於好奇,你有什麼用途呢? – 2010-03-05 19:37:47
我正在嘗試從數據庫中提取選擇列表。我也在使用翻譯,因爲他們在數據庫中,所以我不能標記翻譯的字符串。 – 2010-03-08 14:50:21
這些選擇是暴露給用戶還是僅用於內部邏輯?我想知道這是否可以在表單級別上處理,因爲在那裏動態地構造選擇更爲常見。改變模型層面的選擇似乎無法擺脫首先在模型上設置選擇的目的。也許這可以用不同的方式來解決? – 2010-03-08 16:14:53