1. 程式人生 > >Django通過字段獲取關聯模型

Django通過字段獲取關聯模型

lse field類 values imp mod data sta lis 獲得

    #根據字段獲取關聯表
    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名字和模型名字



Django通過字段獲取關聯模型