django - 如果 ForeignKey 的值为 None,如何获取对象的类型?
问题描述
我有一个基本的外键表结构
class Category(models.Model):
id_pk = models.AutoField(primary_key=True)
label = models.CharField(unique=True, max_length=200, blank=True, null=True)
class Meta:
managed = False
db_table = 'category'
和
class PartProperty(models.Model):
id_pk = models.AutoField(primary_key=True)
category = models.ForeignKey(Category, models.DO_NOTHING, blank=True, null=True)
class Meta:
managed = False
db_table = 'part_property'
如果里面的一行PartProperty
有一个Category
对象,我可以通过 egpart_property = PartProperty.objects.select_related().filter(id_pk=part_property_id)
和
part_property[0].catogory
分别动态访问这个对象,part_property .values(*(self.__COLUMN_NAMES))[0]['self.__COLUMN_NAMES[i]]
并设置一个新值并保存外键指向的表。
但是如果part_property[0].catogory
是 None 我没有用于创建外键表对象的对象类型。
是否可以从 PartProperty / PartProperty 模型中动态获取对象类型?
解决方案
_meta
您可以通过属性动态获取字段的模型类。例如PartProperty._meta.get_field("category").related_model
将返回Category
模型类。
您还可以动态获取模型的字段列表。有关 _meta API 的官方文档,请参阅此链接:https ://docs.djangoproject.com/en/3.2/ref/models/meta/
推荐阅读
- ios - 有没有办法为我的项目中的 Swift 包依赖项更改特定的构建设置?
- python - 迭代 pyspark 列中的列表以展开并添加其他行
- html - 如何让我的响应式导航栏在打开时覆盖在我的内容之上?
- bash - 使用 `--version` 打印`brew --cellar formula`
- c# - 如何在 ASP.NET Core 3.1 中逐行迭代列表
- javascript - 如何进行这种更改方法,以便获得该给定金额的账单
- swiftui - 本地化包含图像和文本的文本内容
- r - 给定一个包含日期和时间的 POSIXct 序列,我如何仅计算时间的平均值(不包括天数)?
- firefox - crossOriginIsolated 在非本地主机地址处为假。我该如何解决?
- javascript - Flask 和 jQuery '$' 未定义