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序列化程序模块()