有沒有簡單的方法可以做到這一點?在運行時設置模型字段選擇屬性?
回答
您可以設置選擇屬性可迭代: 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. 在運行時設置sample_variables屬性
- 3. 在運行時設置href屬性
- 4. 在運行時設置類屬性
- 5. 在運行時Log4Php屬性設置
- 6. 在運行時設置點屬性?
- 7. 如何在運行時設置字段
- 8. 如何在Django中使用模型字段設置動態選擇字段
- 9. Laravel 5.2根據輸入字段設置模型屬性
- 10. backbone.js設置模型屬性內部字段
- 11. 設置屬性@運行時間
- 12. Django ORM:在字段屬性上選擇
- 13. 按外鍵父模型的字段設置選擇
- 14. 訪問模型字段屬性在Django
- 15. 在模型對象上設置屬性?
- 16. 設置一個計算屬性的從屬鍵在運行時
- 17. 模型設計問題:運行時的自定義字段?
- 18. 得到屬性類型在運行時
- 19. 設置屬性打破核心選擇
- 20. 設置多個JavaBeans屬性選擇
- 21. 使用CMB2選擇字段類型設置默認選項
- 22. 根據另一個屬性在後臺設置模型屬性?
- 23. Rails中模型屬性的懶設置?
- 24. 設置模型屬性的初始值?
- 25. 配合:無法設置屬性模型
- 26. yii2 datapicker設置模型的endDate屬性
- 27. Spec RSpec模型屬性設置器
- 28. 無法設置模型MVC屬性
- 29. 在運行時在代碼中設置佈局屬性
- 30. 如何在運行時在Converter對象上設置屬性
出於好奇,你有什麼用途呢? – 2010-03-05 19:37:47
我正在嘗試從數據庫中提取選擇列表。我也在使用翻譯,因爲他們在數據庫中,所以我不能標記翻譯的字符串。 – 2010-03-08 14:50:21
這些選擇是暴露給用戶還是僅用於內部邏輯?我想知道這是否可以在表單級別上處理,因爲在那裏動態地構造選擇更爲常見。改變模型層面的選擇似乎無法擺脫首先在模型上設置選擇的目的。也許這可以用不同的方式來解決? – 2010-03-08 16:14:53