python - 使用 _meta 获取每个模型字段的值
问题描述
在我的模型中,我有一种verbose_name
使用 _meta 获取每个字段的方法。如何使用 _meta 以类似的方式获取每个字段的值?
class Description(models.Model):
name = models.OneToOneField(Breeds, on_delete=models.CASCADE, primary_key=True)
description = models.TextField()
history = models.TextField()
nature = models.TextField()
care = models.TextField()
feed = models.TextField()
health = models.TextField()
some_facts = models.TextField()
def __str__(self):
return self.name.breed
def get_verbose_name(self):
return [field.verbose_name for field in Description._meta.fields]
我想获得类似于该get_verbose_name
方法的值。
解决方案
您可以通过使用field.get_attname()
获取属性的名称来获取值,然后访问getattr(self, field.get_attname())
:
class BaseModel(models.Model):
# …
def get_values(self):
return {
field.name: getattr(self, field.get_attname())
for field in cls._meta.fields
}
然后,这将返回一个将字段名称映射到相应对象的字典。
或作为值列表:
class BaseModel(models.Model):
# …
def get_values(self):
return [
getattr(self, field.get_attname())
for field in cls._meta.fields
]
推荐阅读
- java - 如何在TestNG框架中将值从一个类传递到另一个类
- python-3.x - 无法捕获 wxDataViewListCtrl 上的双击事件
- laravel - Laravel $middlewareGroups 排除非身份验证路由
- magento - 关于产品复制的触发事件
- r - 管道工创建的 rsconnect 发布 API
- amazon-web-services - 在 AWS Cognito 中使用 AdminCreateUser 创建具有自定义属性的用户
- r - 如何将 map() 与可能 () 一起使用
- javascript - Javascript Filereader 按名称排序
- ansible - 如何限制 Ansible 的设置模块(gather_facts)只检索服务器的主机名,例如?=?
- angular - ng2-google-charts 和加载器 - 错误版本错误