首页 > 解决方案 > django __class__ 方法不适用于 m2m 关系

问题描述

在我的 django 项目中的一个实例中,我需要对象的反向关系的类名,因为我使用了__class__method 。

这适用于 OneToOne 关系,即

print(instance.content_object.__class__)

输出是 -

<class 'products.models.ProductCreateModel'>

但是当它与 m2m 一起使用时,它给了我

print(instance.product_seller.__class__)

输出是 -

<class 'django.db.models.fields.related_descriptors.create_reverse_many_to_one_manager.<locals>.RelatedManager'>

我怎样才能得到班级名称?

标签: djangopython-3.xdjango-models

解决方案


这是因为 product_seller 不是 Seller 类的实例,它是一个管理对模型中一组对象的访问的对象RelatedManager尝试instance.product_seller.model获取该集合中的对象类别。


推荐阅读