如何检查django中多对多字段的类型?

ama*_*ann 7 python django django-models manytomanyfield manyrelatedmanager

如何检查django中多对多字段的类型?

我想这样做:

import django  
field.__class__ == django.db.models.fields.related.ManyRelatedManager
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为ManyRelatedManager找不到类.但是,如果我做field.__class__的输出是django.db.models.fields.related.ManyRelatedManager

为什么它指的是一个似乎不存在的类,我怎样才能将它带到工作中?

非常感谢您的帮助.

Bra*_*ant 15

您应该能够将其作为字符串进行检查.

field.__class__.__name__ == 'ManyRelatedManager'
Run Code Online (Sandbox Code Playgroud)


Bot*_*res 5

如果您已有字段实例,则可以执行以下操作:

if isinstance(field, ManyToManyField):
    pass // stuff
Run Code Online (Sandbox Code Playgroud)

如果您只有相关的管理器实例,则可以反向查找字段实例:

>>> print fm
<class 'django.db.models.fields.related.ManyRelatedManager'>
>>> print fm.instance._meta.get_field_by_name('fieldnamehere')
(<django.db.models.fields.related.ForeignKey: fieldnamehere>, None, True, False)
Run Code Online (Sandbox Code Playgroud)

这只是在Django 1.5上测试过的