gpt4 book ai didi

django - 覆盖第三方应用程序的 default_manager (Django)

转载 作者:行者123 更新时间:2023-12-04 10:35:06 25 4
gpt4 key购买 nike

我在我的项目中使用 django-address 模块( https://pypi.org/project/django-address/ )。现在我想添加 get_by_natural_key State 的默认管理器上的方法型号django-address模块。

在 Django 1.10 之前,我可以使用这段代码来做到这一点

class CustomManager(models.Manager):
def get_by_natural_key(self, state_name, country):
country = Country.objects.get_or_create(name=country)[0]
print(country)
return State.objects.get_or_create(name=state_name, country=country)[0]

State.add_to_class('objects', CustomManager())
State.add_to_class('_default_manager', CustomManager())

但是从 Django1.10 开始, _default_manager是只读的,我不确定如何在模型的默认管理器上添加“get_by_natural_key”方法

最佳答案

我不建议覆盖 Django 不希望你覆盖的东西,但如果你仍然想这样做,你可以覆盖 default_manager直接在 Meta 中。

setattr(State._meta, 'default_manager', CustomManager())

关于django - 覆盖第三方应用程序的 default_manager (Django),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60216503/

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