Có cách nào dễ dàng để làm như vậy không?Đặt thuộc tính lựa chọn trường mô hình tại thời gian chạy?
Trả lời
Bạn có thể thiết lập các lựa chọn thuộc tính cho bất kỳ iterable: http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.Field.choices
tôi đã không kiểm tra này bản thân mình vì vậy tôi không chắc chắn khi lựa chọn thuộc tính được đánh giá thực tế, nhưng bạn có thể gán một máy phát điện chức năng sẽ tính toán các lựa chọn mong muốn của bạn.
Bạn cũng có thể điều tra bằng cách sử dụng tín hiệu mẫu post_init: http://docs.djangoproject.com/en/1.1/ref/signals/#post-init
này sẽ cung cấp cho bạn truy cập vào mô hình của bạn sau Django đã khởi tạo nó và do đó bạn có thể thiết lập các lựa chọn tại thời điểm đó. Bạn có thể muốn xem qua giao diện "_meta" như sau:
instance._meta.get_field_by_name('FIELD_NAME')[0].choices = [<choices>...]
Điều đó gần như đã hiệu quả. Tôi có thể thấy các lựa chọn hiện tại, nhưng nếu tôi cố gắng đặt nó thành một giá trị khác, tôi nhận được lỗi: AttributeError: không thể thiết lập thuộc tính. –
Poking xung quanh trong các lĩnh vực nguồn, bạn có thể thấy rằng "lựa chọn" là một tài sản chỉ đọc: http://code.djangoproject.com/browser/django/tags/releases/1.1.1/django/db/models /fields/__init__.py#L296 Thay vào đó hãy thử đặt thành "_choices". Điều này làm việc trong vỏ nhưng tôi sẽ không thực hiện bất kỳ đảm bảo về hậu quả ngoài ý muốn. –
CÓ! Nó ổn với tôi. Cảm ơn nhiều. –
Đặt các lựa chọn in __init__()
.
Tôi xin lỗi, tôi không rõ ràng. Tôi có nghĩa là thiết lập/thay đổi thuộc tính lựa chọn sau khi một mô hình đã được khởi tạo. –
- 1. Mô hình Django loại bỏ thuộc tính "bắt buộc" dựa trên lựa chọn trường khác
- 2. Thay đổi thuộc tính log4j tại thời gian chạy
- 3. Tự động thêm thuộc tính C# tại thời gian chạy
- 4. Lựa chọn thuộc tính Weka
- 5. java cập nhật các thuộc tính tệp thời gian chạy
- 6. Cách đặt cài đặt khóa recaptcha tại thời gian chạy
- 7. Java - Thuộc tính: Thêm khóa mới vào tệp thuộc tính trong thời gian chạy?
- 8. Lựa chọn phương pháp động dựa trên kiểu tham số thời gian chạy
- 9. Thuộc tính động Objective-C trong thời gian chạy?
- 10. Thay đổi tham số của Thuộc tính tại thời gian chạy
- 11. Đang tải các thuộc tính.Cài đặt từ một tệp khác tại thời gian chạy
- 12. Cập nhật cài đặt app.config system.net tại thời gian chạy
- 13. Quyết định các thuộc tính nào được tuần tự hóa tại thời gian chạy
- 14. Tự động tạo mô hình dữ liệu cốt lõi tại thời gian chạy
- 15. Chọn đối số mẫu tại thời gian chạy trong C++
- 16. Sửa đổi mô hình khung thực thể tại thời gian chạy
- 17. Lựa chọn thuộc tính giá trị với html Agility Pack
- 18. Thuộc tính mô hình động Ember.js
- 19. Lặp qua tất cả các thuộc tính đối tượng tại thời gian chạy
- 20. Thay đổi thông số của thuộc tính tùy chỉnh tại thời gian chạy
- 21. Cách đặt thuộc tính động trên mô hình với Backbone.js
- 22. Đặt Clojure "hằng số" tại thời gian chạy
- 23. Lựa chọn trường mô hình Django - sẽ không phải là một quyết định tốt hơn?
- 24. Nhận thời gian của các múi giờ khác nhau về lựa chọn thời gian từ bộ chọn thời gian
- 25. Thay đổi menu tại thời gian chạy
- 26. Tại sao Windows đặt thuộc tính "thời gian tạo" của tệp mới thành cũ?
- 27. Làm cách nào để tính chiều cao và chiều rộng màn hình tại thời gian chạy?
- 28. Thêm hình ảnh trong thời gian chạy
- 29. Có thể truy vấn thuộc tính tùy chỉnh trong C# trong thời gian biên dịch (không phải thời gian chạy)
- 30. django lựa chọn mô hình lựa chọn như một hộp chọn đa
Vì sự tò mò, trường hợp sử dụng của bạn cho điều này là gì? –
Tôi đang cố kéo danh sách lựa chọn từ cơ sở dữ liệu. Tôi cũng đang sử dụng bản dịch và tôi không thể gắn thẻ chuỗi để dịch vì chúng nằm trong cơ sở dữ liệu. –
Những lựa chọn này có được tiếp xúc với người dùng hoặc chỉ được sử dụng cho logic nội bộ không? Tôi tự hỏi nếu đây là một cái gì đó có thể được xử lý ở cấp độ hình thức vì nó là phổ biến hơn nhiều để tự động xây dựng các lựa chọn đó. Thay đổi các lựa chọn ở cấp mô hình dường như đánh bại mục đích thiết lập các lựa chọn trên mô hình ngay từ đầu. Có lẽ điều này có thể được tiếp cận theo một cách khác? –