Django Content-Type:检查字段是否声明为多对多字段

时间:2017-03-29 05:33:46

标签: django django-models

我检查API从浏览器传递的几个字段名称,并在传递给Django ORM查询之前验证它们。

问题是针对给定模式和给定字段名称,如何使用Content-Type框架确定该字段是否被声明为“多对多”字段?

2 个答案:

答案 0 :(得分:1)

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

>>> content_type = ContentType.objects.get(model="<model_name>")
>>> field = content_type.model_class()._meta.get_field("<field_name>")
>>> field.many_to_many
True

答案 1 :(得分:0)

您可能不需要内容类型来准确。如果您已经拥有模型或实例,您将获得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 ]