Django内容类型:检查字段是否声明为多对多字段

Django内容类型:检查字段是否声明为多对多字段,django,django-models,Django,Django Models,我检查了API从浏览器传递的几个字段名,并在传递到Django ORM查询之前对它们进行了验证 问题是对于给定的模式和给定的字段名,如何确定该字段是否使用内容类型框架声明为多对多字段?您可以获取该字段并检查其属性: >>> content_type = ContentType.objects.get(model="<model_name>") >>> field = content_type.model_class()._meta.get_fiel

我检查了API从浏览器传递的几个字段名,并在传递到Django ORM查询之前对它们进行了验证


问题是对于给定的模式和给定的字段名,如何确定该字段是否使用内容类型框架声明为多对多字段?

您可以获取该字段并检查其属性:

>>> content_type = ContentType.objects.get(model="<model_name>")
>>> field = content_type.model_class()._meta.get_field("<field_name>")
>>> field.many_to_many
True
>>content\u type=ContentType.objects.get(model=”“)
>>>field=content\u type.model\u class()。\u meta.get\u字段(“”)
>>>field.many\u到\u many
真的

您可能不需要内容类型来精确显示此内容。如果您已经准备好了模型或实例,您将获得m2m字段列表,如下所示

m2m_fields = [field.name for field in _object._meta.many_to_many]
如果您只是在字段名之后,a.k.a具体字段使用如下

fields = [field.name for field in _object._meta.concrete_fields ]

谢谢@ozgur。斯略特设法想出了一个类似的答案。