- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一些 Django 模型,比如说
class Foo(models.Model):
class Meta:
abstract = True
class Bar(Foo)
pass
我希望能够找到所有继承自 Foo 的模型,以便与它们一起执行任务。应该很简单,比如
from django.db import models
from myapp.models import Foo
for model in models.get_models():
if issubclass(model, Foo):
do_something()
唉,这是行不通的,因为 issubclass(Bar, Foo)
报告 False
,这可能是初始化模型的 Django 元类的内部工作的结果.
Is there a way to check whether a Django models is a descendant of an abstract Django model?
请不要建议使用 duck typing 作为解决方案。在这种情况下,我很想知道是否存在子类关系。
最佳答案
问题在于如何导入类。而不是:
from myapp.models import Foo
使用:
from myproject.myapp.models import Foo
要了解什么是正确的方法,您可以查看 Django 如何导入您的模型:
print models.get_models()
关于python - 将 `issubclass()` 与 Django 模型一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7914787/
我有一段代码在大部分时间都运行得很好,但每隔一段时间我就会在回溯中遇到这个错误: File "/path/to/somefile.py", line 272, in somefile sm =
我试图找出为什么 issubclass() 的行为会根据类的导入方式发生变化。 我有以下设置 proj |_pkg |_ __init__.py |_ base.py |_ child.p
>>> import sys >>> sys.version_info (2, 4, 4, 'final', 0) >>> class C: ... pass ... >>> issubclas
我有一个 class A没有属性,我测试它是否是 typing.Container 的子类.正如预期的那样,该测试失败了。 在单独的测试中,我添加了 __contains(self, k)__属性到
好的,所以我正在编写一个框架,它在名为 task.py 的子目录中查找 python 文件,然后查找从基类 Task} 但是当我注释掉 Base 类(Task1 的基类)中的 __metaclass_
目的是实现某种插件框架,其中插件是同一基类(即 A)的子类(即 B)。基类使用标准导入加载,而子类使用 imp.load_module() 从知名包(即 pkg)的路径加载。 pkg/ __i
from collections import * class C(object): def __iter__(self): pass def __contains__(self, i
我正在开发一个 Python 应用程序,我需要多次检查对象是否是数据库模型的子类。 我做了我自己的功能来做到这一点: def isModel(obj): return isinstance(o
你如何解释 isinstance(Hello,object) 返回 True 而 issubclass(Hello,object) 返回 False? >>> class Hello: pas
在 Python 中,比较运算符 -- , >= -- 可以实现表示与实现类相关的任何内容。在 Python 2 中,这是通过重写 __cmp__ 完成的。 ,并在 Python 3 中重写 __l
已安装的版本: python-openstackclient==3.17.0 osc-lib==1.11.1 除以下命令外,所有 openstack 命令似乎都有效: openstack stack
我有一些 Django 模型,比如说 class Foo(models.Model): class Meta: abstract = True class Bar(Foo)
我对为什么会收到此错误一无所知。 最佳答案 正如人们所说,issubclass() 的两个参数应该是类,而不是对象的实例。 考虑这个样本: >>> issubclass( 1, int ) Trace
我有一个包含 List 属性的类.其中一些属性,T 属于从类继承的类,例如 Foo。 public class Foo {} public class MyTypeA : Foo {} public
几个月来我一直在使用同一个类来连接到 SQL Server 数据库、运行查询、将数据插入暂存表等。就在昨天,每当我的代码尝试插入暂存表时,我都会收到错误消息: TypeError: issubclas
我正在使用 Django 2.1.5 和 pycharm。从 Pycharm 运行测试时,我开始收到此错误: File "/Users/..../lib/python3.6/site-packages
当使用 FastAPI 和 SQLModel 进行模块化导入时,如果我打开/docs,我会收到以下错误: TypeError: issubclass() arg 1 must be a class p
当使用 FastAPI 和 SQLModel 进行模块化导入时,如果我打开/docs,我会收到以下错误: TypeError: issubclass() arg 1 must be a class p
我有一个模块 InvalidObj class InvalidObj(Exception): def__init__(self, value): self.value = va
在 CPython 中如下 import collections issubclass(dict, collections.Mapping) 返回 True。这让我有点困惑,因为 dict 是 CTy
我是一名优秀的程序员,十分优秀!