让我们说我有一个类如:
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的优秀类序列化器,它会对我有很大的帮助!
感谢您的回复!
答案 0 :(得分:1)
Django模型_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
# ...
答案 1 :(得分:0)
您可以使用 get_field() 获取特定字段的属性
MyClass._meta.get_field('attributeA').max_length