gpt4 book ai didi

python - 如何插入反序列化的 Django 对象?

转载 作者:行者123 更新时间:2023-11-28 19:27:17 25 4
gpt4 key购买 nike

我想在我的 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 表的末尾?

最佳答案

您的模型缺少错误中所述的属性“cinodecompany_ptr_id”:

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

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

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

关于python - 如何插入反序列化的 Django 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7106202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com