2013-01-23 31 views
6

Tôi đang làm việc trên một ứng dụng sử dụng Django và MongoDB (làm mô hình). Tôi đang cố gắng để khởi tạo (bằng tay) một đối tượng mô hình (để gửi nó hơn nữa đến một máy chủ khác), bằng cách sử dụng dữ liệu nhận được từ một biểu mẫu. Mô hình này trông như thế này:Ghép nối tiếp Django thành lỗi JSON: đối tượng 'MetaDict' không có thuộc tính 'concrete_model'

class MyModel(DynamicDocument): 
    study_name = StringField(default="first study") 
    individual_name = StringField(default="individual") 
    file_list = ListField(StringField) # this is a list of paths to some files 

Trong hình thức Tôi đang làm như sau:

pilot_object = MyModel() 
pilot_object.individual_name = self.data['individual_name'] 
pilot_object.study_name = self.data['study_name'] 
pilot_object.file_list = files_list #file paths (strings) 

nơi self.data là dữ liệu nhận được từ các hình thức. Bây giờ tôi muốn serialize để JSON đối tượng này (pilot_object) như mô tả trong tài liệu:

data_serialized = serializers.serialize('json', [pilot_object, ]) 

nhưng tôi nhận được lỗi này:

đối tượng 'MetaDict' không có thuộc tính 'concrete_model'

và việc tuần tự hóa không thành công.

Có ai giúp được không?

+1

Tôi có cùng một vấn đề và phát hiện ra rằng đó là vì tôi đang sử dụng MongoEngine có các đối tượng QuerySet khác nhau. Tài liệu tại đây: http: //docs.mongoengine.org/en/latest/apireference.html#mongoengine.queryset.QuerySet –

+0

Bạn đã tìm thấy giải pháp nào chưa? – Rahman

+0

Không, và tôi đã ngừng tìm kiếm giải pháp gần đây. :( – Clara

Trả lời

0

Điều này là do bạn đang sử dụng phiên bản cũ hơn của django. Kiểm tra sự khác biệt giữa 1.31.4, concrete_model chỉ khả dụng cho 1,4 trở lên.

+4

Tôi đang sử dụng Django 1.6b4 (Beta mới nhất hiện có sẵn) và đã chạy vào cùng một vấn đề.Bất cứ đề nghị? – Kurtis

+0

Tôi đang sử dụng 1.5.5 và vẫn còn có lỗi này – crizzwald

+0

Tôi đang có cùng vấn đề với Django 1.7.8 :( –

0

Nếu bạn có siêu {Inheritance: True} thì hãy xóa nó. Nó đang tìm kiếm các lớp bê tông mà tôi nghĩ rằng bạn havent thiết kế vì vậy không cần phải thừa kế là True dù sao đi nữa. Nó làm việc cho tôi.

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