动态获取与两个Django模型相关的字段名



假设我有以下Django模型:

class Parent(models.Model):
name = models.CharField(max_length=50)
children = models.ManyToManyField("Child")
class Child(models.Model):
name = models.CharField(max_length=50)

我将ParentChild模型存储在脚本中的变量中。给定这两个模型,我如何动态地将字段名称children作为字符串:

def get_field_name(model, related_model):
# what do I need here
get_field_name(Parent, Child)
# "children"

您可以使用此命令获取模型的字段和类型

fields = Parent._meta.get_fields()

给出了所有模型的元组和<ManyToManyRel: parent.children>现在比较类,如果它具有多对多关系,则打印属性。fields给出了类对象。现在,您可以通过迭代元组并打印类名来获得属性的类型。

for i in fields:
print(i.__class__name)

现在您可以检查多对多字段

您可以尝试以下两行来获取模型的字段。

parent_fields = Parent._meta.fields
# or alternatively
parent_fields = Parent._meta.get_fields()

由于您将从输出中获得一个ImmutableList,因此您必须按索引号获得字段,以字符串形式获得值,类似于

parent_fields[1].attname

相关内容

  • 没有找到相关文章

最新更新