有时我们在存入数据库时需要获取字段的verbose_name属性,方便非开发人员理解。下面通过一个实例来看看,如何获取model中如verbose_name,app_label这类信息。
下面是一个在model中定义的类,我们通过django提供的shell来进行演示
class Disk(models.Model):
server = models.ForeignKey(to='Server', to_field='id', on_delete=models.CASCADE)
slot = models.CharField(verbose_name='槽位', max_length=32)
pd_type = models.CharField(verbose_name='类型', max_length=32)
capacity = models.CharField(verbose_name='容量', max_length=32)
model = models.CharField(verbose_name='模型', max_length=64)
它有5个字段:其中server是与主机关联的外键。
实例化对象后,这些相关的信息都保存在_meta中:
>>> from api import models
>>> disk1 = models.Disk.objects.get(id=10)
>>> disk1._meta
<Options for Disk>
现在我们要查看slot的verbose_name,应该怎么查看呢?slot是disk中第2个字段:
>>> disk1._meta.fields[2].verbose_name
'槽位'
注意,这个下标计数仍然是从0开始的,id字段是0
>>> disk1._meta.fields[0].verbose_name
'ID'
同样的,我们还可以获取app_label属性:
>>> disk1._meta.app_label
'api'
那都有哪些options呢?
null, blank, choices,db_column, db_index, db_tablespace, default, editable, error_messages, help_text, primary_key, unique, unique_for_date,
unique_for_month,unique_for_year, verbose_name, validators等等。