Django获取模型的所有外键名称

7

我需要获取一个模型的所有外键名称。比如说,如果一个模型的名称是UserProfile,它有usercustomercomment作为外键,那么我想通过一个简单的代码来获取UserProfile模型的所有外键名称。


@Zeeker 我尝试了[obj._meta._field_name_cache中的k.name,如果'dir(k)'中有'foreign_related_fields'] - rajapallavan
@Zeeker 我也尝试过这个方法 [k.name for k in obj._meta._field_name_cache if k.class.name == "ForeignKey"] - rajapallavan
1个回答

4

您可以这样查找关系: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'

5
get_all_related_objects 已经被弃用,自 Django 1.10 版本开始不再存在。详情请见:https://docs.djangoproject.com/en/1.10/ref/models/meta/#migrating-from-the-old-api - Cristina Botez
3
您可以使用以下一行代码将字段存储起来:fields = [field for field in YourModel._meta.fields if field.get_internal_type() == 'ForeignKey']。该代码会筛选出YourModel中所有数据类型为“ForeignKey”的字段并将它们存储到列表“fields”中。 - radtek
@radtek 不错的一行代码。一行代码并不总是最易于理解/阅读的,所以我倾向于避免使用它们。这并不是错误的,但也不是正确的。 - Yuji 'Tomita' Tomita

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接