gpt4 book ai didi

python - 如何在 Django 继承模型中调用正确的方法

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:11 25 4
gpt4 key购买 nike

我有一个模型类 B 和 C,它们实现了方法 f 并继承自模型类 A。我想在所有 A 实例(B 和 C)上调用函数 f。为什么

for a in A.objects.all():
a.f()

没有按预期工作?

最佳答案

那是因为默认的 django 管理器不管理多态性。所以当你这样做的时候

for a in A.objects.all():

您所有的a 对象都是A 类型,没有B 或C 类型。

您需要使用 django-model-utils应用程序,它是 select_subclasses 工具:

for a in A.objects.select_subclasses():
# type(a) returns the correct subclass

关于python - 如何在 Django 继承模型中调用正确的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7737615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com