2013-01-23 53 views
6

我正在使用Django和MongoDB(作为模型)的应用程序。我正尝试使用从表单获取的数据来初始化(手动)模型对象(以便将其进一步发送到另一个服务器)。该模型是这样的:Django序列化为JSON错误:'MetaDict'对象没有属性'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 

在形式我做了以下内容:

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) 

其中self.data是从表单接收的数据。 现在我想序列化到JSON这个对象(pilot_object)的文档中描述:

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

,但我得到这个错误:

'MetaDict' 对象有没有属性 'concrete_model'

并且序列化失败。

任何人都可以帮忙吗?

+1

我有同样的问题,并发现这是因为我使用MongoEngine有不同的QuerySet对象。文档在这里:http://docs.mongoengine.org/en/latest/apireference.html#mongoengine.queryset.QuerySet –

+0

你有没有找到任何解决方案? – Rahman

+0

不,我最近停止了寻找解决方案。 :( – Clara

回答

0

这是由于您使用的是旧版本的django。检查1.31.4之间的差异,concrete_model仅适用于1.4和更高版本。

+4

我正在使用Django 1.6b4(最新的Beta版本),并且遇到同样的问题,有什么建议吗? – Kurtis

+0

我正在使用1.5.5,但仍然有这个错误 – crizzwald

+0

我有同样的问题。问题与Django 1.7.8 :( –

0

如果你有元{继承:真}然后将其删除。它正在寻找我认为你没有设计的具体课程,所以无论如何都不需要继承为真。它为我工作。

相关问题