首页 文章

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

提问于
浏览
1

假设我有一个类如下:

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的优秀类序列化器,它会帮助我很多!

谢谢你的回复!

1 回答

  • 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
    # ...
    

相关问题