【问题标题】:Django get all foreign key names of a model [closed]Django获取模型的所有外键名称[关闭]
【发布时间】:2015-01-05 06:12:01
【问题描述】:

我需要获取单个模型的所有外键名称。例如,如果模型名称是 UserProfile,并且它具有 usercustomercomment 作为外键,则意味着通过单个代码我想获取 UserProfile 模型的所有外键名称。

【问题讨论】:

  • @Zeeker 我试过 [k.name for k in obj._meta._field_name_cache if 'foreign_related_fields' in dir(k)]
  • @Zeeker 我也试过这个 [k.name for k in obj._meta._field_name_cache if k.__class__.__name__ == "ForeignKey"]

标签: django foreign-keys


【解决方案1】:

你可以找到这样的关系:UserProfile._meta.get_all_related_objects()

您可以通过UserProfile._meta.fields直接遍历模型上的字段

您可以通过field.get_internal_type()确定字段类型

for field in UserProfile._meta.fields:
    if field.get_internal_type() == 'ForeignKey':
        print 'found a foreign key'

【讨论】:

  • get_all_related_objects 已被弃用,并且从 Django 1.10 开始不再存在 docs.djangoproject.com/en/1.10/ref/models/meta/…
  • 你可以用这 1 行来存储字段fields = [field for field in YourModel._meta.fields if field.get_internal_type() == 'ForeignKey']
  • @radtek 不错的一个班轮。一个班轮并不总是最具交流性/易于阅读的,所以我倾向于避免使用它们。没有错,但也不对。
猜你喜欢
  • 2012-05-07
  • 2019-02-10
  • 1970-01-01
  • 2016-10-20
  • 1970-01-01
  • 2011-11-29
  • 2018-04-22
  • 2021-01-13
  • 2011-07-04
相关资源
最近更新 更多