2011-01-31 30 views
8

Tôi cố gắng để gán giá trị cho các thuộc tính của một số calss như sau:gán một thuộc tính sử dụng getattr

for name in dir(modelType): 
     if request.get(name): 
      getattr(model, name) = request.get(name) 

nhưng có được excption: "không thể gán cho chức năng gọi là"

cách Tôi có thể thay đổi các thuộc tính mà không biết chúng vào thời điểm thích hợp không?

+1

Điều này rất không an toàn. Điều gì sẽ xảy ra nếu ai đó chuyển thông số id = trong URL? Họ sẽ ghi đè dữ liệu hiện có. Đây có phải là Django hay một khung tương tự? Bạn nên sử dụng xử lý biểu mẫu thích hợp để lưu dữ liệu. – ironfroggy

Trả lời

5
setattr(model, name, request.get(name)) 

nhưng tôi khuyên bạn nên lưu dữ liệu yêu cầu trong một cuốn từ điển, lớp chuyên dụng, hoặc truy cập trực tiếp - trừ khi bạn đang làm lập trình meta cụ/mẫn, setattr thường là công cụ sai cho công việc.

Các vấn đề liên quan