如何插入反序列化的django对象?

时间:2011-08-18 10:50:16

标签: python django serialization django-models

我想在我的django服务器上导入'A'来自另一个django服务器'B'的一些对象。

为此,在服务器'B'上执行: python manage.py dumpdata --format = xml

然后我得到了我想要的xml部分,在服务器'A'上我尝试反序列化一个对象: 这是我在python shell上所做的:

data="""<object pk="69" model="inventory.cinodeserver">
        <field type="CharField" name="server_name">rfrsmh81</field>
        <field type="CharField" name="server_type">Sun Fire V440</field>
        <field type="CharField" name="server_serial">0449AL2A3A</field>
        <field type="CharField" name="server_os">SunOS 5.8 HW 2/04</field>
        <field type="CharField" name="server_fw">4.18.10</field>
    </object>
"""
l=list(serializers.deserialize("xml", data))
o=l[0]
print o

<DeserializedObject: inventory.CINodeServer(pk=69)>

问题是我已经在pk = 69处有另一个对象,我只想在Mysql表的末尾插入导入的对象。

所以我尝试了这个:

o.object.pk=None
o.save()

我得到了:

IntegrityError: (1048, "Column 'cinodecompany_ptr_id' cannot be null")

Note, the model is :

class CINodeServer(CINodeCompany):
    class Meta: 
        app_label = 'inventory'

    server_name = models.CharField(max_length=64,blank=True)
    server_type = models.CharField(max_length=64,blank=True)
    server_serial = models.CharField(max_length=64,blank=True)
    server_os = models.CharField(max_length=30,blank=True)
    server_fw = models.CharField(max_length=20,blank=True)

那么如何在SQL表的末尾添加导入的对象?

1 个答案:

答案 0 :(得分:0)

您的模型缺少属性&#c; cinodecompany_ptr_id&#39;如错误中所述:

  

IntegrityError:(1048,&#34; Column&#39; cinodecompany_ptr_id&#39;不能为空&#34;)

查看模型的数据库表以查看该列的定义。

您发布的型号代码不完整。它继承自您未包含的CINodeCompany。该缺失字段可能是在该父类中定义的。

相关问题