Cho một lớp mẫu (ở đâu đó sâu trong ứng dụng Django khổng lồ của bạn) ..Khỉ vá một lớp biểu mẫu Django?
class ContactForm(forms.Form):
name = ...
surname = ...
Và xem xét mà bạn muốn thêm lĩnh vực khác để hình thức này mà không mở rộng hoặc sửa đổi các lớp hình thức tự, tại sao không cách tiếp cận sau đây hoạt động?
ContactForm.another_field = forms.CharField(...)
(đoán đầu tiên của tôi là hackery metaclass rằng Django sử dụng chỉ áp dụng cho lần đầu tiên lớp mẫu được xây dựng. Nếu vậy, sẽ có thể là một cách để redeclare lớp để khắc phục điều này?)
Bạn gần như chắc chắn đúng. Đây chính xác là lý do bạn không thể dễ dàng thêm các trường mới vào một lớp con mô hình.Model. –
Với các mô hình có sự cố "syncdb" ngay cả khi việc vá khỉ hoạt động. Nhưng với hình thức vá khỉ có thể là một người tiết kiệm cuộc sống tại một số thời điểm IMHO. –