#根据字段获取关联表 filter_field_obj=self.model._meta.get_field(filter_field) print('filter_field_obj:',filter_field_obj) print(type(filter_field_obj)) if isinstance(filter_field_obj,related.RelatedField): print('related_model:',filter_field_obj.related_model.objects.all()) #关联表的全部数据,只适用于一对多,多对多 if isinstance(filter_field_obj,related.RelatedField): data_list=filter_field_obj.related_model.objects.all() else: #普通字段 data_list=self.model.objects.values('pk',filter_field)
model._meta.get_field(字段名称)可以获取这个模型关于字段的对象
用type()对类型进行检验,发现 多对多 和 一对多 类型
from django.db.models.fields.related import ForeignKey, ManyToManyField from django.db.models.fields import related
实际上一对多和多对多都是related.RelatedField类型
接下在可以使用上边获得的字段对象(如果是一对多或者多对多的话),可以通过obj.related_model.objects.all()获取关联模型的所有字段。如果是旧版本的Django,可以通过obj.rel.to来获取关联模型。
另外可以通过模型获取app名字和模型名字