我正在尝试在Django中序列化一个类,以便我可以获取json文件中的所有可用字段,我需要类似
的内容{"tablename": ["Verbose Name", "ModelType", "RelatedClass", "relatefield"]}
这个想法是大多数对象只有详细的名称和模型类型,但是对于相关的字段,它也会有关系引用的类的名称,以及我可以手动添加的字段将helptext作为默认值,或者我可以将其留下,并以不同的方式处理它。
我需要在课堂上这样做而不是我用pickle和jsonpickle试过的对象,但它们似乎没有像我期望的那样工作,我没有想法,任何输入都会非常感激。
感谢。
编辑:需要澄清更好
class Test(models.Model):
name = models.CharField(verbose_name="Name")
email = models.CharField()
books = models.ForeignKey(Book, verbose_name="Books")
class Book(models.Model):
name = models.CharField()
现在我只想序列化Test,根本就没有值,只有类本身,所以你有。
"name": {"verbose_name": "Name", "type": "CharField"}
"books": {"verbose_name": "Books", "type": "ForeignKey", "related_class": "Book", "related_class": "Country", "related_field": "name"}
我需要一个围绕它们的json线出来,但我不必对它们中的数据运行任何查询只是模型信息。
答案 0 :(得分:1)
Django的序列化框架提供了一种将Django模型“转换”为其他格式的机制。通常这些其他格式将基于文本并用于通过线路发送Django数据,但序列化程序可以处理任何格式(基于文本或不基于文本)。
from django.core import serializers
data = serializers.serialize("xml", SomeModel.objects.all())
xml示例:
<?xml version="1.0" encoding="utf-8"?>
<django-objects version="1.0">
<object pk="123" model="sessions.session">
<field type="DateTimeField" name="expire_date">2013-01-16T08:16:59.844560+00:00</field>
<!-- ... -->
</object>
</django-objects>
JSON:
[
{
"pk": "4b678b301dfd8a4e0dad910de3ae245b",
"model": "sessions.session",
"fields": {
"expire_date": "2013-01-16T08:16:59.844Z",
...
}
}
]
反序列化数据也是一个相当简单的操作:
for obj in serializers.deserialize("xml", data):
do_something_with(obj)
答案 1 :(得分:1)
类也是对象,模型字段,因此您可以轻松地检查它们。一种解决方案是为模型类(非实例)编写your custom json encoder。有关模型字段,详细名称等的所有信息都存储在YourModelClass.__meta
。