Python 如何获取模型属性的属性?

Python 如何获取模型属性的属性?,python,xml,django,serialization,Python,Xml,Django,Serialization,假设我有一门课,比如: class MyClass(models.Model): attributeA = models.CharField(max_length=100) attributeB = models.IntegerField() attributeC = models.CharField(max_length = 150, blank=True, nullable = True) attributeD = models.ForeignKey('Mod

假设我有一门课,比如:

class MyClass(models.Model):
    attributeA = models.CharField(max_length=100)
    attributeB = models.IntegerField()
    attributeC = models.CharField(max_length = 150, blank=True, nullable = True)
    attributeD = models.ForeignKey('ModelB',related_name='FK_modelB')
    attributeE = models.ManyToManyField('ModelC')
我想做的是获取每个属性的属性,而不仅仅是我使用的名称:

my_instance._meta.get_all_field_name()
(这给了我一个属性名称列表)。不,我想要的是,对于每个属性,知道他的类型(CharField、IntegerField、ForeignKey、ManyToManyField…),如果是ForeignKey/ManyToManyField和所有元数据,比如max_length等等,谁是相关的

它的目的是将一个类序列化为XML,如果它是ManyToManyField、ForeignKey或简单值,则XML中的表示形式将有所不同

顺便说一句,如果有人知道一个伟大的XML类序列化程序,它将帮助我很多


谢谢你的回复

Django models
\u meta.fields
是可以访问以获取字段属性的字段列表:

>>> from django.contrib.auth.models import User
>>> u = User.objects.all()[0]
>>> u._meta.fields[1].__class__.__name__
'CharField'
>>> u._meta.fields[1].name
'username'
>>> u._meta.fields[1].max_length
30
>>> u._meta.fields[1].blank
False
# ...

可以使用get_field()获取特定字段的属性


MyClass.\u meta.get\u field('attributeA').max\u length

内置有什么问题?我就是这么做的!我不知道Django有一个很好的序列化内置框架:)谢谢,这就是我搜索的内容。我还发现了一种最简单的方法,使用django序列化程序模块()