gpt4 book ai didi

python - 如何修改 Django 模型?

转载 作者:太空宇宙 更新时间:2023-11-03 14:13:35 25 4
gpt4 key购买 nike

如果我想改变,例如Django 的站点模块:

from django.contrib.sites.models import Site

我将如何在我的项目中做到这一点?我是继承类还是如何更改或添加一些代码?

还是我只是创建一个新模型?

最佳答案

您可以通过继承添加一个字段

如果您仍然需要保留对原始 Site 对象/行的引用,您可以使用 multi-table inheritance

from django.contrib.sites.models import Site

class MySite(Site):
new_field = models.CharField(...)

def new_method(self):
# do something new

这允许您拥有常规的 Site 对象,这些对象可以通过您的 MySite 模型进行扩展,在这种情况下您可以,例如通过 site.mysite 访问额外的字段和方法,例如site.mysite.new_field

通过模型继承,您无法更改祖先字段

通过继承你不能隐藏祖先字段,因为Django will raise a FieldError if you override any model field in any ancestor model .

而且我不会冒险为此编写自定义数据库迁移,因为如果您更新 Django,您可能会遇到与 Site 模型的模式冲突。

如果我想存储祖先模型允许的更多信息,我会这样做:

class SiteLongName(Site):
long_name = models.CharField(max_length=60)

关于python - 如何修改 Django 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35198113/

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